m4-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Changes to m4/m4/output.c,v


From: Eric Blake
Subject: Changes to m4/m4/output.c,v
Date: Wed, 08 Nov 2006 05:11:48 +0000

CVSROOT:        /sources/m4
Module name:    m4
Changes by:     Eric Blake <ericb>      06/11/08 05:11:47

Index: m4/output.c
===================================================================
RCS file: /sources/m4/m4/m4/output.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- m4/output.c 8 Nov 2006 04:26:53 -0000       1.36
+++ m4/output.c 8 Nov 2006 05:11:47 -0000       1.37
@@ -174,6 +174,7 @@
   m4_diversion *diversion;
   gl_list_iterator_t iter;
   const void *elt;
+  bool fail = false;
 
   if (diversion_table)
     {
@@ -182,14 +183,21 @@
       while (gl_list_iterator_next (&iter, &elt, NULL))
        {
          diversion = (m4_diversion *) elt;
-         if (!diversion->size && diversion->u.file)
-           close_stream_temp (diversion->u.file);
+         if (!diversion->size && diversion->u.file &&
+             close_stream_temp (diversion->u.file) != 0)
+           {
+             error (0, errno,
+                    _("cannot clean temporary file for diversion"));
+             fail = true;
+           }
        }
       gl_list_iterator_free (&iter);
     }
 
   /* Clean up the temporary directory.  */
   if (cleanup_temp_dir (output_temp_dir) != 0)
+    fail = true;
+  if (fail)
     _exit (exit_failure);
 }
 
@@ -664,8 +672,9 @@
       diversion->size = 0;
       diversion->used = 0;
     }
-  else if (diversion->u.file)
-    close_stream_temp (diversion->u.file);
+  else if (diversion->u.file && close_stream_temp (diversion->u.file) != 0)
+    m4_error (context, 0, errno,
+             _("cannot clean temporary file for diversion"));
   gl_list_remove_node (diversion_table, node);
   diversion->u.next = free_list;
   free_list = diversion;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]