autoconf-patches
[Top][All Lists]
Advanced

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

[PATCH] Properly handle funny file names for headers in config.status.


From: Ralf Wildenhues
Subject: [PATCH] Properly handle funny file names for headers in config.status.
Date: Sun, 2 Mar 2008 13:01:51 +0100
User-agent: Mutt/1.5.17+20080114 (2008-01-14)

        The test suite did not cover this bug because the code was not
        quoting properly the arguments of `rm -f' (which "fails" silently)
        as well as the arguments of `diff' (whose output was redirected to
        /dev/null so we couldn't see its error message).
        * lib/autoconf/status.m4 (_AC_OUTPUT_HEADER): Properly quote the
        file names passed to `rm' and `diff'.
        * tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
        Add a regression test.

Signed-off-by: Benoit Sigoure <address@hidden>
Signed-off-by: Ralf Wildenhues <address@hidden>
---

This patch is unchanged from Benoit's last version.

Note that the Automake code involved here has been fixed
in 1.10.1 and 1.10a to be more resilient to quoting styles
for the argument to _AC_AM_CONFIG_HEADER_HOOK, but things
should work for both the old and the new Automake code.

Cheers,
Ralf

 ChangeLog              |   12 ++++++++++++
 lib/autoconf/status.m4 |    6 +++---
 tests/torture.at       |    9 +++++++++
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 38cfe8e..c480adf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,16 @@
 2008-03-01  Benoit Sigoure  <address@hidden>
+
+       Properly handle funny file names for headers in config.status.
+       The test suite did not cover this bug because the code was not
+       quoting properly the arguments of `rm -f' (which "fails" silently)
+       as well as the arguments of `diff' (whose output was redirected to
+       /dev/null so we couldn't see its error message).
+       * lib/autoconf/status.m4 (_AC_OUTPUT_HEADER): Properly quote the
+       file names passed to `rm' and `diff'.
+       * tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
+       Add a regression test.
+
+2008-03-01  Benoit Sigoure  <address@hidden>
        and Ralf Wildenhues  <address@hidden>
 
        Properly expand @configure_input@ in config.status.
diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
index 398d0cb..c8f329a 100644
--- a/lib/autoconf/status.m4
+++ b/lib/autoconf/status.m4
@@ -864,10 +864,10 @@ m4_define([_AC_OUTPUT_HEADER],
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
     } >"$tmp/config.h" \
       || AC_MSG_ERROR([could not create $ac_file])
-    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       AC_MSG_NOTICE([$ac_file is unchanged])
     else
-      rm -f $ac_file
+      rm -f "$ac_file"
       mv "$tmp/config.h" "$ac_file" \
        || AC_MSG_ERROR([could not create $ac_file])
     fi
@@ -879,7 +879,7 @@ m4_define([_AC_OUTPUT_HEADER],
 dnl If running for Automake, be ready to perform additional
 dnl commands to set up the timestamp files.
 m4_ifdef([_AC_AM_CONFIG_HEADER_HOOK],
-        [_AC_AM_CONFIG_HEADER_HOOK([$ac_file])
+        [_AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
 ])dnl
 ])# _AC_OUTPUT_HEADER
 
diff --git a/tests/torture.at b/tests/torture.at
index b179afe..c052c04 100644
--- a/tests/torture.at
+++ b/tests/torture.at
@@ -274,6 +274,15 @@ AT_CHECK([grep OK "$file"], [], [OK
 ])
 AT_CHECK([./config.status "--header=$file:$file.in"],
         [0], [ignore])
+# Run the same test a 2nd time to see that config.status does not recreate
+# the header (regression test)
+AT_CHECK([./config.status "--header=$file:$file.in"],
+        [0], [config.status: creating file with  funny \ ' \' $ & #!*? name
+config.status: file with  funny \ ' \' $ & #!*? name is unchanged
+])
+AT_CHECK([grep ' & ' "$file"], [],
+[/* file with  funny \ ' \' $ & #!*? name.  Generated from file with  funny \ 
' \' $ & #!*? name.in by configure.  */
+])
 AT_CHECK([grep OK "$file"], [], [OK
 ])
 AT_CLEANUP
-- 
1.5.4.rc5.2.g3ed9a





reply via email to

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