+2008-03-01 Benoit Sigoure <tsuna@lrde.epita.fr>
+
+ 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 <tsuna@lrde.epita.fr>
and Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
&& 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
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
])
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