summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/uniq.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/uniq.c b/src/uniq.c
index 8a5e5c9dc..85c45e200 100644
--- a/src/uniq.c
+++ b/src/uniq.c
@@ -335,7 +335,11 @@ check_file (const char *infile, const char *outfile)
char *thisfield;
size_t thislen;
if (readlinebuffer (thisline, istream) == 0)
- break;
+ {
+ if (ferror (istream))
+ goto closefiles;
+ break;
+ }
thisfield = find_field (thisline);
thislen = thisline->length - 1 - (thisfield - thisline->buffer);
match = !different (thisfield, prevfield, thislen, prevlen);
@@ -377,9 +381,11 @@ check_file (const char *infile, const char *outfile)
if (ferror (istream) || fclose (istream) == EOF)
error (EXIT_FAILURE, errno, _("error reading %s"), infile);
+ if (ferror (ostream))
+ error (EXIT_FAILURE, 0, _("error writing %s"), outfile);
/* Close ostream only if it's not stdout -- the latter is closed
via the atexit-invoked close_stdout. */
- if (ostream != stdout && (ferror (ostream) || fclose (ostream) == EOF))
+ if (ostream != stdout && fclose (ostream) != 0)
error (EXIT_FAILURE, errno, _("error writing %s"), outfile);
free (lb1.buffer);