diff --git a/ChangeLog b/ChangeLog
index 05125bafe1568bed4826b6bf828ad3731f3b547d..13c92d1a2ef065ca355736508136a10a28b0c870 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,15 @@
 version 0.9.4 -- unreleased
     handler changes
-	mysql, pgsql, svn: fixed inversed vsname emptyness check
 	mysql:
 	 . Fixed improper use of $vuserhome (Debian: #351083)
 	 . Fixed erroneous removal of tmpfile when it didn't exit
+	 . Fixed inversed vsname emptiness check
+	 . Fixed su quote usage to be more posixy
+	pgsql:
+	 . Fixed inversed vsname emptiness check
+	 . Fixed su quote usage to be more posixy
+	svn:
+	 . Fixed inversed vsname emptiness check
 	rdiff:
 	 . Fixed improper include/exclude symlink dereference
 	dup:
diff --git a/examples/example.rdiff b/examples/example.rdiff
index da3932913e363f806502e975366f7df0921e2e19..698776ea753b13951aa624d5b8568be82b18991a 100644
--- a/examples/example.rdiff
+++ b/examples/example.rdiff
@@ -86,7 +86,7 @@ directory = /backups
 host = backuphost
 
 # make the files owned by this user. you must be able to
-# `su -c ssh backupuser@backhost` without specifying a password.
+# `su -c "ssh backupuser@backhost"` without specifying a password.
 # only use if "[dest] type = remote"
 user = backupuser
 
diff --git a/handlers/mysql b/handlers/mysql
index ae54aae7f2a2c0500b8999e03e043009e6eb7768..4bfffbb8e12aa3cddd6b3363626477332292c0a2 100644
--- a/handlers/mysql
+++ b/handlers/mysql
@@ -179,7 +179,7 @@ then
 	else
 		execstr="$MYSQLHOTCOPY --quiet --allowold --regexp /.\*/./.\*/ $hotdir"
 	fi
-	debug "su $user -c '$execstr'"
+	debug 'su $user -c "$execstr"'
 	if [ ! $test ]
 	then
 		output=`su $user -c "$execstr" 2>&1`
@@ -202,7 +202,7 @@ then
 		else
 			execstr="$MYSQLHOTCOPY --allowold $db $hotdir"
 		fi
-		debug "su $user -c '$execstr'"
+		debug 'su $user -c "$execstr"'
 		if [ ! $test ]
 		then
 			output=`su $user -c "$execstr" 2>&1`
@@ -230,7 +230,7 @@ then
     then
 	if [ $usevserver = yes ]
 	then
-	    debug "echo show databases | $VSERVER $vsname exec su $user -c $MYSQL $defaultsfile | grep -v Database"
+	    debug 'echo show databases | $VSERVER $vsname exec su $user -c "$MYSQL $defaultsfile" | grep -v Database'
 	    databases=`echo 'show databases' | $VSERVER $vsname exec su $user -c "$MYSQL $defaultsfile" | grep -v Database`
 	    if [ $? -ne 0 ]
 	    then
@@ -253,7 +253,7 @@ fi
 		else
 			execstr="$MYSQLDUMP $defaultsfile --lock-tables --complete-insert --add-drop-table --quick --quote-names $ignore $db > $dumpdir/${db}.sql"
 		fi
-		debug "su $user -c '$execstr'"
+		debug 'su $user -c "$execstr"'
 		if [ ! $test ]
 		then
 			output=`su $user -c "$execstr" 2>&1`
diff --git a/handlers/pgsql b/handlers/pgsql
index c7197a821fb8b2280d9dad95db57b852b6462917..e9d40cf4acb468fd250e2b35d88475f163e495f8 100644
--- a/handlers/pgsql
+++ b/handlers/pgsql
@@ -72,9 +72,9 @@ chmod 700 $vroot$backupdir
 # if $databases = all, use pg_dumpall
 if [ "$databases" == "all" ]; then
     if [ $usevserver = yes ]; then
-	execstr="$VSERVER $vsname exec su - postgres -c $PGSQLDUMPALL > $backupdir/${vsname}.sql"
+	execstr='$VSERVER $vsname exec su - postgres -c "$PGSQLDUMPALL > $backupdir/${vsname}.sql"'
     else
-	execstr="su - postgres -c $PGSQLDUMPALL > $backupdir/${localhost}-all.sql"
+	execstr='su - postgres -c "$PGSQLDUMPALL > $backupdir/${localhost}-all.sql"'
     fi
     debug "$execstr"
     if [ ! $test ]; then
@@ -94,9 +94,9 @@ else
     for db in $databases; do
 	if [ $usevserver = yes ]
 	    then
-	    execstr="$VSERVER $vsname exec su - postgres -c $PGSQLDUMP $db > $backupdir/${db}.sql"
+	    execstr='$VSERVER $vsname exec su - postgres -c "$PGSQLDUMP $db > $backupdir/${db}.sql"'
 	else
-	    execstr="su - postgres -c $PGSQLDUMP $db > $backupdir/${db}.sql"
+	    execstr='su - postgres -c "$PGSQLDUMP $db > $backupdir/${db}.sql"'
 	fi
 	debug "$execstr"
 	if [ ! $test ]; then