###
### common bindings for dbconfig-common
###
###	all variables and functions fall under the namespace "dbc_foo" and
###	"_dbc_foo", depending on whether or not they are "external"
###

##
## dbc_logpart: log interal messages (without newline)
##
dbc_logpart(){
	# for the time being, at least, let's default to verbose
	#if [ "$dbc_debug" ]; then
		echo -ne "$@ " >&2
	#fi
	if [ "$dbc_log" ]; then
		dbc_log="$dbc_log $@"
	else
		dbc_log="$@ "
	fi
}

##
## dbc_logline: log interal messages
##
dbc_logline(){
	# for the time being, at least, let's default to verbose
	#if [ "$dbc_debug" ]; then
		echo -e "$@." >&2
	#fi
	if [ "$dbc_log" ]; then
		dbc_log="$dbc_log $@."
	else
		dbc_log="$@."
	fi
}

###
### simple debugging function
###
dbc_debug(){
	if [ "$dbc_debug" ]; then
		dbc_logline $@
	fi
}

##
## internal sanity check for certain important variables
##
_dbc_sanity_check(){
	while [ "$1" ]; do
		case "$1" in
		"package")
			if [ -z "$dbc_package" ]; then
				dbc_error="dbconfig-common can not determine the
					name of the package it is configuring."
				dbc_logline "sanity check failed for dbc_package"
				return 1
			fi
		;;
		"packageconfig")
			if [ -z "$dbc_packageconfig" ]; then
				dbc_error="dbconfig-common can not determine the
					name of the package configuration file."
				dbc_logline "sanity check failed for dbc_packageconfig"
				return 1
			fi
		;;
		"dbtype")
			if [ -z "$dbc_dbtype" ]; then
				dbc_error="dbconfig-common can not determine the
					database type."
				dbc_logline "sanity check failed for dbc_dbtype"
				return 1
			fi
		;;
		"command")
			if [ -z "$dbc_command" ]; then
				dbc_error="dbconfig-common can not determine the
					maintainer script running it."
				dbc_logline "sanity check failed for dbc_command"
				return 1
			fi
		;;
		"dbname")
			if [ -z "$dbc_dbname" ]; then
				dbc_error="No database name specified. Have
				       to know the name to create it."
				dbc_logline "sanity check failed for dbc_dbname"
				return 1
			fi
		;;
		"dbadmin")
			if [ -z "$dbc_dbadmin" ]; then
				dbc_error="No database administrator specified."
				dbc_logline "sanity check failed for dbc_dbadmin"
				return 1
			fi
		;;
		"dbuser")
			if [ -z "$dbc_dbuser" ]; then
				dbc_error="No database user specified."
				dbc_logline "sanity check failed for dbc_dbuser"
				return 1
				fi
				;;
		"dbpass")
			if [ -z "$dbc_dbpass" ]; then
				dbc_error="No database password specified."
				dbc_logline "sanity check failed for dbc_dbpass"
				return 1
				fi
				;;
		"mysql")
			if ! which mysql >/dev/null; then
				dbc_error="No mysql client to execute.  (have
					you installed mysql-client?"
				dbc_logline "sanity check failed for mysql"
				return 1
			fi
		;;
		"psql")
			if ! which psql >/dev/null; then
				dbc_error="No psql client to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for psql"
				return 1
			fi
		;;
		"sqlite")
			if ! which sqlite >/dev/null; then
				dbc_error="No sqlite client to execute.  (have
				       you installed the sqlite package?"
				dbc_logline "sanity check failed for sqlite"
				return 1
			fi
		;;
		"createdb")
			if ! which createdb >/dev/null; then
				dbc_error="No pgsql createdb to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for createdb"
				return 1
			fi
		;;
		"dropdb")
			if ! which dropdb >/dev/null; then
				dbc_error="No pgsql dropdb to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for dropdb"
				return 1
			fi
		;;
		"createuser")
			if ! which createuser >/dev/null; then
				dbc_error="No pgsql createuser to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for createuser"
				return 1
			fi
		;;
		"dropuser")
			if ! which dropuser >/dev/null; then
				dbc_error="No pgsql dropuser to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for dropuser"
				return 1
			fi
		;;
		"pg_dump")
			if ! which pg_dump >/dev/null; then
				dbc_error="No pgsql pg_dump to execute.  (have
				       you installed postgresql-client?"
				dbc_logline "sanity check failed for pg_dump"
				return 1
			fi
		;;
		"mysqldump")
			if ! which mysqldump >/dev/null; then
				dbc_error="No mysqldump to execute.  (have
				       you installed mysql-client?"
				dbc_logline "sanity check failed for mysqldump"
				return 1
			fi
		;;
		*)
			dbc_error="don't know how to sanity check for $1"
			dbc_logline "don't know how to sanity check for $1"
			return 1
		;;
		esac
		shift
	done
}

dbc_mktemp(){
	local tfile ttemplate
	if [ "$1" ]; then 
		ttemplate="$1"; 
	else
		ttemplate="dbconfig-common.XXXXXX"; 
	fi

	tfile=`mktemp -t $ttemplate`
	if [ ! -f $tfile ]; then
		dbc_error="error creating temporary file"
		dbc_logline "error creating temporary file"
		return 1
	else
		echo $tfile
	fi
}
