(main): Check for close (STDOUT_FILENO) failure.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 14 Dec 2005 01:39:46 +0000 (01:39 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 14 Dec 2005 01:39:46 +0000 (01:39 +0000)
src/cat.c

index 4012d8f..307a516 100644 (file)
--- a/src/cat.c
+++ b/src/cat.c
@@ -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);
 }