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');