(close_output_file): Don't report bogus errno value
authorJim Meyering <jim@meyering.net>
Tue, 23 Sep 2003 21:57:13 +0000 (21:57 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 23 Sep 2003 21:57:13 +0000 (21:57 +0000)
after ferror discovers an output error.  We don't know the proper
errno value, since it might have been caused by any of a whole
bunch of calls, and it might have been trashed in the meantime.
Fixing this problem will require much more extensive changes;
in the meantime just say "write error".

src/csplit.c

index 07fd2d321b37f860ed8dfabf0a186c15155268a6..5b15cac310f81f3c8252ccc62a3965b61273ed74 100644 (file)
@@ -986,9 +986,15 @@ close_output_file (void)
 {
   if (output_stream)
     {
-      if (ferror (output_stream) || fclose (output_stream) == EOF)
+      if (ferror (output_stream))
        {
-         error (0, errno, _("write error for `%s'"), output_filename);
+         error (0, 0, _("write error for `%s'"), output_filename);
+         output_stream = NULL;
+         cleanup_fatal ();
+       }
+      if (fclose (output_stream) != 0)
+       {
+         error (0, errno, "%s", output_filename);
          output_stream = NULL;
          cleanup_fatal ();
        }