--- /dev/null
+--- cpio-2.4.2/main.c.error Sat Jun 24 10:29:07 2000
++++ cpio-2.4.2/main.c Sat Jun 24 10:29:07 2000
+@@ -518,5 +518,5 @@ main (argc, argv)
+ if (archive_des >= 0 && rmtclose (archive_des) == -1)
+ error (1, errno, "error closing archive");
+
+- exit (0);
++ exit (error_count != 0);
+ }
+--- cpio-2.4.2/extern.h.error Wed Nov 30 14:48:28 1994
++++ cpio-2.4.2/extern.h Sat Jun 24 10:29:07 2000
+@@ -84,6 +84,8 @@ extern int f_force_local;
+ extern char *program_name;
+ extern int (*xstat) ();
+ extern void (*copy_function) ();
++
++extern unsigned int error_count;
+ \f
+ #if __STDC__ || defined(__MSDOS__)
+ # define P_(s) s
+--- cpio-2.4.2/error.c.error Tue Dec 5 15:39:52 1995
++++ cpio-2.4.2/error.c Sat Jun 24 10:26:42 2000
+@@ -46,6 +46,10 @@ void exit ();
+ /* This variable is incremented each time `error' is called. */
+ unsigned int error_message_count;
+
++/* This variable is incremented each time `error' is called and
++ errnum is not zero. */
++unsigned int error_count;
++
+ /* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+@@ -122,7 +126,10 @@ error (status, errnum, message, va_alist
+ ++error_message_count;
+
+ if (errnum)
+- fprintf (stderr, ": %s", strerror (errnum));
++ {
++ fprintf (stderr, ": %s", strerror (errnum));
++ error_count++;
++ }
+ putc ('\n', stderr);
+ fflush (stderr);
+ if (status)
+
+