Hi Per, Peter, * Per Bothner wrote on Thu, Mar 10, 2005 at 06:27:08PM CET: > Ralf Wildenhues wrote: > >Sorry for self-reply. > > > >OK, better patch: does the quoting only in one place, plus complains > >loudly and fails if $libobj contains special characters. > > Works for me.
Good. Applied to HEAD and branch-2-0. * Peter O'Gorman wrote on Thu, Mar 10, 2005 at 03:12:59PM CET: > > This looks okay to me, can we have a test too though? Yes, I am working on one. First the branch-1-5 backport below. My question would be whether anyone objects to inclusion into the "obsolete" branch. IMVHO it's arguable whether this is a bugfix or new feature. Thank you both for checking, Ralf 2005-03-12 Per Bothner <[EMAIL PROTECTED]>, Ralf Wildenhues <[EMAIL PROTECTED]> Allow special characters in source file names. Will break unless `-o target' is also given, which must not contain special characters. En passant, fix source file quoting broken for cygwin/MSVC. * ltmain.in (compile mode): Use new variable qsrcfile for quoted source file name for compile $command. Fix missing quotes for _c_o lockfile. * NEWS: Update. Index: NEWS =================================================================== RCS file: /cvsroot/libtool/libtool/NEWS,v retrieving revision 1.109.2.26 diff -u -r1.109.2.26 NEWS --- NEWS 12 Feb 2005 13:54:43 -0000 1.109.2.26 +++ NEWS 12 Mar 2005 18:04:06 -0000 @@ -1,6 +1,8 @@ NEWS - list of user-visible changes between releases of GNU Libtool New in 1.5.15a: 2005-??-??; CVS version 1.5.15a, Libtool team: +* Allow shell special characters like `$' in source file names, but not + in object names, to enhance GCJ support. * Bug Fixes. New in 1.5.14: 2005-02-12; CVS version 1.5.13a, Libtool team: Index: ltmain.in =================================================================== RCS file: /cvsroot/libtool/libtool/Attic/ltmain.in,v retrieving revision 1.334.2.63 diff -u -r1.334.2.63 ltmain.in --- ltmain.in 12 Mar 2005 08:44:11 -0000 1.334.2.63 +++ ltmain.in 12 Mar 2005 17:36:06 -0000 @@ -757,6 +757,15 @@ esac done + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then @@ -829,12 +838,17 @@ $run $rm $removelist exit $EXIT_FAILURE fi - $echo $srcfile > "$lockfile" + $echo "$srcfile" > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac $run $rm "$libobj" "${libobj}T" @@ -856,10 +870,10 @@ fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" fi if test ! -d "${xdir}$objdir"; then @@ -939,9 +953,9 @@ if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code - command="$base_compile $srcfile" + command="$base_compile $qsrcfile" else - command="$base_compile $srcfile $pic_flag" + command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj"