//usage: "\n -w Warn about improperly formatted checksum lines"
//usage: )
+//FIXME: GNU coreutils 8.25 has no -s option, it has only these two long opts:
+// --quiet don't print OK for each successfully verified file
+// --status don't output anything, status code shows success
+
#include "libbb.h"
/* This is a NOEXEC applet. Be very careful! */
unsigned flags;
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) {
+ /* -s and -w require -c */
+ opt_complementary = "s?c:w?c";
/* -b "binary", -t "text" are ignored (shaNNNsum compat) */
flags = getopt32(argv, "scwbt");
argv += optind;
if (!*argv)
*--argv = (char*)"-";
- if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && !(flags & FLAG_CHECK)) {
- if (flags & FLAG_SILENT) {
- bb_error_msg_and_die("-%c is meaningful only with -c", 's');
- }
- if (flags & FLAG_WARN) {
- bb_error_msg_and_die("-%c is meaningful only with -c", 'w');
- }
- }
-
do {
if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && (flags & FLAG_CHECK)) {
FILE *pre_computed_stream;
bb_error_msg("WARNING: %d of %d computed checksums did NOT match",
count_failed, count_total);
}
+ if (count_total == 0) {
+ return_value = EXIT_FAILURE;
+ /*
+ * md5sum from GNU coreutils 8.25 says:
+ * md5sum: <FILE>: no properly formatted MD5 checksum lines found
+ */
+ bb_error_msg("%s: no checksum lines found", *argv);
+ }
fclose_if_not_stdin(pre_computed_stream);
} else {
uint8_t *hash_value = hash_file(*argv);
test x"$CONFIG_FEATURE_FANCY_HEAD" != x"y" \
&& { echo "SKIPPED: $sum"; exit 0; }
+FAILCOUNT=0
+
text="The quick brown fox jumps over the lazy dog"
text=`yes "$text" | head -c 9999`
n=$(($n+1))
done | "$sum"
)`
-
-if test x"$result" = x"$expected -"; then
+if test x"$result" != x"$expected -"; then
+ echo "FAIL: $sum (r:$result exp:$expected)"
+ : $((FAILCOUNT++))
+else
echo "PASS: $sum"
- exit 0
fi
-echo "FAIL: $sum (r:$result exp:$expected)"
-exit 1
+# GNU compat: -c EMPTY must fail (exitcode 1)!
+>EMPTY
+if "$sum" -c EMPTY 2>/dev/null; then
+ echo "FAIL: $sum -c EMPTY"
+ : $((FAILCOUNT++))
+else
+ echo "PASS: $sum -c EMPTY"
+fi
+rm EMPTY
+
+exit $FAILCOUNT