This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=ee816a2224adb2a9eb20c4e5787875cd385437c3 The branch, master has been updated via ee816a2224adb2a9eb20c4e5787875cd385437c3 (commit) from a8e726e4bf47514e770f5885e416f92f150419a9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ee816a2224adb2a9eb20c4e5787875cd385437c3 Author: Eric Blake <[EMAIL PROTECTED]> Date: Fri May 23 06:20:40 2008 -0600 Improve handling of frozen file errors. * src/freeze.c (produce_frozen_state): Detect write failures. (reload_frozen_state): Use close_stream. * tests/freeze.at (freezing failure): New test. * THANKS: Update. Reported by Jean-Charles Longuet. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 9 +++++++++ THANKS | 1 + src/freeze.c | 7 +++++-- tests/freeze.at | 19 +++++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index bad66ae..ef9a327 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-05-23 Eric Blake <[EMAIL PROTECTED]> + + Improve handling of frozen file errors. + * src/freeze.c (produce_frozen_state): Detect write failures. + (reload_frozen_state): Use close_stream. + * tests/freeze.at (freezing failure): New test. + * THANKS: Update. + Reported by Jean-Charles Longuet. + 2008-05-19 Eric Blake <[EMAIL PROTECTED]> In frozen file, split consecutive strings with newline. diff --git a/THANKS b/THANKS index 807bd1b..f6a22d6 100644 --- a/THANKS +++ b/THANKS @@ -61,6 +61,7 @@ Ian Taylor [EMAIL PROTECTED] Ilya N. Golubev [EMAIL PROTECTED] Jan Djarv [EMAIL PROTECTED] Jason Merrill [EMAIL PROTECTED] +Jean-Charles Longuet [EMAIL PROTECTED] Jim Avera [EMAIL PROTECTED] Jim Kingdom [EMAIL PROTECTED] Jim Meyering [EMAIL PROTECTED] diff --git a/src/freeze.c b/src/freeze.c index d32fc9e..40de809 100644 --- a/src/freeze.c +++ b/src/freeze.c @@ -25,6 +25,7 @@ #include "m4.h" #include "binary-io.h" +#include "close-stream.h" #include "quotearg.h" static void produce_mem_dump (FILE *, const char *, size_t); @@ -326,7 +327,9 @@ produce_frozen_state (m4 *context, const char *name) /* All done. */ fputs ("# End of frozen state file\n", file); - fclose (file); + if (close_stream (file) != 0) + m4_error (context, EXIT_FAILURE, errno, NULL, + _("unable to create frozen state")); } /* Issue a message saying that some character is an EXPECTED character. */ @@ -941,7 +944,7 @@ ill-formed frozen file, version 2 directive `%c' encountered"), 'T'); free (string[0]); free (string[1]); free (string[2]); - if (ferror (file) || fclose (file) != 0) + if (close_stream (file) != 0) m4_error (context, EXIT_FAILURE, errno, NULL, _("unable to read frozen state")); m4_set_current_file (context, NULL); diff --git a/tests/freeze.at b/tests/freeze.at index 2aa2aea..548ced3 100644 --- a/tests/freeze.at +++ b/tests/freeze.at @@ -51,6 +51,25 @@ AT_CLEANUP AT_BANNER([Freezing state.]) +## ---------------- ## +## freezing failure ## +## ---------------- ## + +AT_SETUP([freezing failure]) +AT_KEYWORDS([frozen]) + +AT_CHECK_M4([-F /none/such], [1], [], +[[m4: cannot open `/none/such': No such file or directory +]]) + +if test -w /dev/full && test -c /dev/full ; then + AT_CHECK_M4([-F /dev/full], [1], [], +[[m4: unable to create frozen state: No space left on device +]]) +fi +AT_CLEANUP + + ## --------------- ## ## large diversion ## ## --------------- ## hooks/post-receive -- GNU M4 source repository
