[Top][All Lists]
[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