[Dbconfig-common-devel] dbconfig-common/internal mysql,1.6,1.7

seanius@haydn.debian.org seanius@haydn.debian.org


Update of /cvsroot/dbconfig-common/dbconfig-common/internal
In directory haydn:/org/alioth.debian.org/chroot/home/users/seanius/tmp/cvs-serv32451/internal

Modified Files:
	mysql 
Log Message:
slightly cleaner implementation capturing stderr, and\
removing some duplication of code between mysql functions

Index: mysql
===================================================================
RCS file: /cvsroot/dbconfig-common/dbconfig-common/internal/mysql,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mysql	5 May 2005 04:44:28 -0000	1.6
+++ mysql	7 May 2005 22:43:05 -0000	1.7
@@ -55,8 +55,9 @@
 ##	note this is done without passing any sensitive info on the cmdline
 ##
 dbc_mysql_exec_file(){
-	local l_sqlfile l_retval l_error l_dbname
+	local l_sqlfile l_retval l_error l_dbname l_errfile
 	l_sqlfile=$1
+	l_errfile=`mktemp -t dbconfig-common_sql_exec_error.XXXXXX`
 
 	if [ ! "$l_sqlfile" ]; then
 		dbc_error="no file supplied to execute"
@@ -64,22 +65,16 @@
 		return 1
 	fi
 
-	mycnf=`_dbc_generate_mycnf`
 	if [ ! "$_dbc_nodb" ]; then
 		l_dbname="$dbc_dbname"
 	fi
-	if [ ! "$_dbc_pass_output" ]; then
-		l_error=`mysql --defaults-extra-file="$mycnf" $l_dbname < $l_sqlfile 2>&1`
-	else
-		mysql --defaults-extra-file="$mycnf" $l_dbname < $l_sqlfile
-	fi
 
-	l_retval=$?
-	rm -f $mycnf
-	if [ $l_retval -ne 0 ]; then
-		dbc_error="mysql said: $l_error"
-		return $l_retval
+	mycnf=`_dbc_generate_mycnf`
+	if ! mysql --defaults-extra-file="$mycnf" $l_dbname 2>"$l_errfile" <$l_sqlfile; then
+		dbc_error="mysql said: `cat $l_errfile`"
 	fi
+	rm -f "$mycnf" "$l_errfile"
+	return $l_retval
 }
 
 ##
@@ -89,38 +84,26 @@
 ##	including the mysql command itself
 ##
 dbc_mysql_exec_command(){
-	local statement l_sqlfile l_retval l_error l_dbname
+	local statement l_sqlfile l_retval
 	statement=$@
 	l_retval=0
 	l_sqlfile=`mktemp -t dbconfig-common_sqlfile.XXXXXX`
 	cat << EOF > $l_sqlfile
 $statement
 EOF
-	mycnf=`_dbc_generate_mycnf`
-	if [ ! "$_dbc_nodb" ]; then
-		l_dbname="$dbc_dbname"
-	fi
-	if [ ! "$_dbc_pass_output" ]; then
-		l_error=`mysql --defaults-extra-file="$mycnf" $l_dbname < $l_sqlfile 2>&1` 
-	else
-		mysql --defaults-extra-file="$mycnf" $l_dbname < $l_sqlfile
-	fi
-	
+	dbc_mysql_exec_file "$l_sqlfile"
 	l_retval=$?
-	rm -f $mycnf $l_sqlfile
-	if [ $l_retval -ne 0 ]; then
-		dbc_error="mysql said: $l_error"
-		return $l_retval
-	fi
+	rm -f "$l_sqlfile"
+	return $l_retval
 }
 
 ##
 ## check for the existance of a specified database
 ##
 _dbc_mysql_check_database(){
-	local dbc_dbname local _dbc_nodb _dbc_pass_output
+	local dbc_dbname local _dbc_nodb
 	dbc_dbname=$1
-	_dbc_nodb="yes" _dbc_pass_output="yes" dbc_mysql_exec_command "SHOW DATABASES" 2>/dev/null | grep -q "^$dbc_dbname\$"
+	_dbc_nodb="yes" dbc_mysql_exec_command "SHOW DATABASES" 2>/dev/null | grep -q "^$dbc_dbname\$"
 	return $?
 }
 
@@ -142,7 +125,7 @@
 		l_dballow="$dbc_dballow"
 	fi
 
-	if ! _dbc_pass_output="yes" _dbc_nodb="yes" dbc_mysql_exec_command "SHOW GRANTS FOR '$dbc_dbuser'@'$l_dballow'" | grep -qi "GRANT ALL PRIVILEGES ON \`$dbc_dbname\`"; then
+	if ! _dbc_nodb="yes" dbc_mysql_exec_command "SHOW GRANTS FOR '$dbc_dbuser'@'$l_dballow'" | grep -qi "GRANT ALL PRIVILEGES ON \`$dbc_dbname\`"; then
 		return 1
 	else
 		return 0