autoconf-patches
[Top][All Lists]
Advanced

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

[PATCH 2/3] Properly handle funny file names for headers in config.statu


From: Benoit Sigoure
Subject: [PATCH 2/3] Properly handle funny file names for headers in config.status.
Date: Tue, 18 Dec 2007 13:54:07 +0100

        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>
---
 lib/autoconf/status.m4 |    6 +++---
 tests/torture.at       |    9 +++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
index 9cb56f8..27352f4 100644
--- a/lib/autoconf/status.m4
+++ b/lib/autoconf/status.m4
@@ -868,10 +868,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
@@ -883,7 +883,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 6a7b962..c1ec29a 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.rc0.88.g7d4e-dirty





reply via email to

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