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: Tim Van Holder
Subject: RE: Argument quoting problem when processing config_subdirs
Date: Sat, 6 Jan 2001 21:03:29 +0100

Oops - obviously, it should be:
    '-srcdir=*' | '--srcdir=*' | '--srcdi=*' | '--srcd=*' | '--src=*' \
    | '--sr=*')
(with the backslash).

And of course ac_sub_configure should be quoted too (though this can
probably be done unconditionally).

Fixed diff follows:

--- \Tmp\Source\autoconf-2.49b.gnu\acgeneral.m4 Wed Dec  6 14:44:12 2000
+++ \Tmp\Source\autoconf-2.49b\acgeneral.m4     Sat Jan  6 20:58:50 2001
@@ -4597,8 +4681,10 @@
 if test "$no_recursion" != yes; then
 
   # Remove --cache-file and --srcdir arguments so they do not pile up.
+dnl Don't forget we might have quoted these!
   ac_sub_configure_args=
   ac_prev=
+  ac_sep=
   for ac_arg in $ac_configure_args; do
     if test -n "$ac_prev"; then
       ac_prev=
@@ -4612,13 +4698,21 @@
     | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
     | --c=*)
       ;;
+    '-cache-file=*' | '--cache-file=*' | '--cache-fil=*' | '--cache-fi=*' \
+    | '--cache-f=*' | '--cache-=*' | '--cache=*' | '--cach=*' | '--cac=*' \
+    | '--ca=*' | '--c=*')
+      ;;
     --config-cache | -C)
       ;;
     -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
       ac_prev=srcdir ;;
     -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
       ;;
-    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
+    '-srcdir=*' | '--srcdir=*' | '--srcdi=*' | '--srcd=*' | '--src=*'
+    | '--sr=*')
+      ;;
+    *) ac_sub_configure_args="$ac_sub_configure_args$ac_sep$ac_arg"
+       ac_sep=" ";;
     esac
   done
 
@@ -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,28 @@
       esac
 ])dnl
 
-      AC_MSG_NOTICE([running $ac_sub_configure $ac_sub_configure_args 
--cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir])
+      dnl Since we're fabricating the --srcdir option, quote it like
+      dnl 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
+      ac_sub_configure_args="$ac_sub_configure_args$ac_sep$ac_sub_srcdir_opt"
+
+      dnl Same goes for --cache-file
+      case $ac_cache_file in
+[  *" "*|*"    "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)]
+           ac_cache_file=`echo "$ac_cache_file" | sed "s/'/'\\\\\\\\''/g"`
+           ac_cache_file_opt="'--cache-file=$ac_cache_file'" ;;
+        *) ac_cache_file_opt="--cache-file=$ac_cache_file"   ;;
+      esac
+      ac_sub_configure_args="$ac_sub_configure_args$ac_sep$ac_cache_file_opt"
+
+      AC_MSG_NOTICE([running $ac_sub_configure $ac_sub_configure_args])
       # 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
       then :
       else
         AC_MSG_ERROR([$ac_sub_configure failed for $ac_subdir])




reply via email to

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