On some operating systems, notices of output errors are sometimes
delayed until you close the file.  However, in the normal case
coreutils 'cat' doesn't check the return value from
'close(STDOUT_FILENO)'.  I installed this patch.

2005-12-13  Paul Eggert  <[EMAIL PROTECTED]>

        * src/cat.c (main): Check for close (STDOUT_FILENO) failure.

--- src/cat.c   11 Jul 2005 18:21:11 -0000      1.105
+++ src/cat.c   14 Dec 2005 01:39:46 -0000      1.106
@@ -555,7 +555,9 @@ main (int argc, char **argv)
   textdomain (PACKAGE);
 
   /* Arrange to close stdout if we exit via the
-     case_GETOPT_HELP_CHAR or case_GETOPT_VERSION_CHAR code.  */
+     case_GETOPT_HELP_CHAR or case_GETOPT_VERSION_CHAR code.
+     Normally STDOUT_FILENO is used rather than stdout, so
+     close_stdout does nothing.  */
   atexit (close_stdout);
 
   /* Parse command line options.  */
@@ -766,5 +768,8 @@ main (int argc, char **argv)
   if (have_read_stdin && close (STDIN_FILENO) < 0)
     error (EXIT_FAILURE, errno, _("closing standard input"));
 
+  if (close (STDOUT_FILENO) != 0)
+    error (EXIT_FAILURE, errno, _("write error"));
+
   exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
 }


_______________________________________________
Bug-coreutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to