lineedit: do not hang on error, but return error indicator.
[oweals/busybox.git] / coreutils / cksum.c
index 546532c3c21d4618ed11ee72a1abbece89c3dfd4..8e7800ee95cd4fa4a9d3d76034762b82801ca9bb 100644 (file)
@@ -4,8 +4,8 @@
  *
  * Copyright (C) 2006 by Rob Sullivan, with ideas from code by Walter Harms
  *
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */
-
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
 #include "libbb.h"
 
 int cksum_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -15,6 +15,7 @@ int cksum_main(int argc UNUSED_PARAM, char **argv)
        uint32_t crc;
        off_t length, filesize;
        int bytes_read;
+       int exit_code = EXIT_SUCCESS;
        uint8_t *cp;
 
 #if ENABLE_DESKTOP
@@ -27,8 +28,10 @@ int cksum_main(int argc UNUSED_PARAM, char **argv)
        do {
                int fd = open_or_warn_stdin(*argv ? *argv : bb_msg_standard_input);
 
-               if (fd < 0)
+               if (fd < 0) {
+                       exit_code = EXIT_FAILURE;
                        continue;
+               }
                crc = 0;
                length = 0;
 
@@ -60,5 +63,5 @@ int cksum_main(int argc UNUSED_PARAM, char **argv)
                                crc, filesize, *argv);
        } while (*argv && *++argv);
 
-       fflush_stdout_and_exit(EXIT_SUCCESS);
+       fflush_stdout_and_exit(exit_code);
 }