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"


Reply via email to