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


Reply via email to