[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#270887: xbase-clients: startx and xinit do not preserve client arguments



Hi,

based on the patch from Jari Aalto i tried to make an easier one...

Now _every_ argument is surrounded with "" and all " in the argument is
escaped by an \  .
The "eval" will do the rest..

Greetz
s

-- 
GnuPG: 5755FB64

Per aspera ad astra.
--- startx	2008-08-21 21:59:43.000000000 +0200
+++ startx	2008-08-21 22:00:38.000000000 +0200
@@ -47,6 +47,10 @@
 
 fi
 
+function escapearg()
+{
+	echo $* | sed 's#"#\\\"#g'
+}
 
 whoseargs="client"
 while [ x"$1" != x ]; do
@@ -57,13 +61,13 @@
 	    if [ x"$clientargs" = x ]; then
 		client="$1"
 	    else
-		clientargs="$clientargs $1"
+		clientargs="$clientargs \"`escapearg $1`\""
 	    fi
 	else
 	    if [ x"$serverargs" = x ]; then
 		server="$1"
 	    else
-		serverargs="$serverargs $1"
+		serverargs="$serverargs \"`escapearg $1`\""
 	    fi
 	fi
 	;;
@@ -72,14 +76,14 @@
 	;;
     *)
 	if [ "$whoseargs" = "client" ]; then
-	    clientargs="$clientargs $1"
+	    clientargs="$clientargs \"`escapearg $1`\""
 	else
 	    # display must be the FIRST server argument
 	    if [ x"$serverargs" = x ] && \
 		 expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
 		display="$1"
 	    else
-		serverargs="$serverargs $1"
+		serverargs="$serverargs \"`escapearg $1`\""
 	    fi
 	fi
 	;;
@@ -187,7 +191,7 @@
 
 
 
-xinit $client $clientargs -- $server $display $serverargs
+eval xinit $client $clientargs -- $server $display $serverargs
 
 
 if [ x"$enable_xauth" = x1 ] ; then

Attachment: pgp_WIwcO_dJF.pgp
Description: PGP signature


Reply to: