bug-autoconf
[Top][All Lists]
Advanced

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

Re: Argument quoting problem when processing config_subdirs


From: Akim Demaille
Subject: Re: Argument quoting problem when processing config_subdirs
Date: 15 Jan 2001 10:10:22 +0100
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.1 (Crater Lake)

Sorry, please ignore my previous message, it was really stupid.  No,
more than this actually.  I think this time I understand better.  And
it appears to me that only _AC_OUTPUT_SUBDIRS needs being fixed.  Back
to your patch, here are the chunks which make sense to me.  I'd OK a
patch (address@hidden) with ChangeLog for them.

--- ../autoconf-2.49b.gnu/acgeneral.m4  Wed Dec  6 14:44:12 2000
+++ ./acgeneral.m4      Sun Jan  7 01:32:34 2001
@@ -4661,9 +4755,9 @@
 
     # Check for guested configure; otherwise get Cygnus style configure.
     if test -f $ac_sub_srcdir/configure.gnu; then
-      ac_sub_configure="$SHELL $ac_sub_srcdir/configure.gnu"
+      ac_sub_configure="$SHELL '$ac_sub_srcdir/configure.gnu'"
     elif test -f $ac_sub_srcdir/configure; then
-      ac_sub_configure="$SHELL $ac_sub_srcdir/configure"
+      ac_sub_configure="$SHELL '$ac_sub_srcdir/configure'"
     elif test -f $ac_sub_srcdir/configure.in; then
       ac_sub_configure=$ac_configure
     else



@@ -4686,9 +4780,26 @@
       esac
 ])dnl
 
-      AC_MSG_NOTICE([running $ac_sub_configure $ac_sub_configure_args 
--cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir])
+      # Since we're fabricating the --srcdir option, quote it like
+      # like we normally would.
+      case $ac_sub_srcdir in
+[  *" "*|*"    "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)]
+           ac_sub_srcdir=`echo "$ac_sub_srcdir" | sed "s/'/'\\\\\\\\''/g"`
+           ac_sub_srcdir_opt="'--srcdir=$ac_sub_srcdir'" ;;
+        *) ac_sub_srcdir_opt="--srcdir=$ac_sub_srcdir"   ;;
+      esac
+
+      # Same goes for --cache-file
+      case $ac_sub_cache_file in
+[  *" "*|*"    "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)]
+        ac_sub_cache_file=`echo "$ac_sub_cache_file" | sed "s/'/'\\\\\\\\''/g"`
+        ac_sub_cache_opt="'--cache-file=$ac_sub_cache_file'" ;;
+        *) ac_sub_cache_opt="--cache-file=$ac_sub_cache_file"   ;;
+      esac
+
+      AC_MSG_NOTICE([running $ac_sub_configure $ac_sub_configure_args 
$ac_sub_srcdir_opt $ac_sub_cache_opt])
       # The eval makes quoting arguments work.
-      if eval $ac_sub_configure $ac_sub_configure_args 
--cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
+      if eval $ac_sub_configure $ac_sub_configure_args $ac_sub_srcdir_opt 
$ac_sub_cache_opt
       then :
       else
         AC_MSG_ERROR([$ac_sub_configure failed for $ac_subdir])


Why do you use ac_sub_cache_opt and sub_srcdir_opt?  Just this seems
enough:

+      case $ac_sub_srcdir in
+[  *" "*|*"    "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)]
+           ac_sub_srcdir=`echo "$ac_sub_srcdir" | sed "s/'/'\\\\\\\\''/g"`
+      esac



reply via email to

[Prev in Thread] Current Thread [Next in Thread]