Use ferror(3) to check for errors, rather than inspecting errno. Thanks to
David Douthitt for reporting, and shame on me for writing such crappy code.
diff --git a/coreutils/head.c b/coreutils/head.c
index 0c8ef3d..688c250 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -22,7 +22,6 @@
*
*/
-#include <errno.h>
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
@@ -82,10 +81,9 @@
printf("==> %s <==\n", argv[optind]);
}
head(len, fp);
- if (errno) {
+ if (ferror(fp)) {
perror_msg("%s", argv[optind]);
status = EXIT_FAILURE;
- errno = 0;
}
if (optind < argc - 1)
putchar('\n');