(save_stdin): Report proper errno value after
authorJim Meyering <jim@meyering.net>
Tue, 22 Jan 2002 17:50:41 +0000 (17:50 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 22 Jan 2002 17:50:41 +0000 (17:50 +0000)
fwrite failures.  Do not bother to rewind the temp file, as
it'll be read backwards anyway.

src/tac.c

index de85794..6e75aa3 100644 (file)
--- a/src/tac.c
+++ b/src/tac.c
@@ -1,5 +1,5 @@
 /* tac - concatenate and print files in reverse
-   Copyright (C) 1988-1991, 1995-2001 Free Software Foundation, Inc.
+   Copyright (C) 1988-1991, 1995-2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -453,15 +453,13 @@ save_stdin (FILE **g_tmp, char **g_tempfile)
       if (bytes_read < 0)
        error (EXIT_FAILURE, errno, _("stdin: read error"));
 
-      /* Don't bother checking for failure inside the loop -- check after.  */
-      fwrite (G_buffer, 1, bytes_read, tmp);
+      if (fwrite (G_buffer, 1, bytes_read, tmp) != bytes_read)
+       break;
     }
 
   if (ferror (tmp) || fflush (tmp) == EOF)
     error (EXIT_FAILURE, errno, "%s", tempfile);
 
-  rewind (tmp);
-
   SET_BINARY (fileno (tmp));
   *g_tmp = tmp;
   *g_tempfile = tempfile;