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