The output of md5sum/sha1sum contains a character to indicate what mode was used to read the file - '*' for binary, and ' ' for text or where binary is insignificant.
This flag character makes a difference for the ffmpeg testsuite. This testsuite contains a number of reference files (e.g. [1]), containing the expected md5sum output for those files, which is checked verbatim. By making busybox's md5sum honor this flag in the output, ffmpeg's testsuite can run successfully on top of busybox. The flag is only partially implemented; in coreutils md5sum, a later "-t" option overrides an earlier "-b" option. Here, just check if a "-b" option was specified or not. Neither flag affects how the files actually are read. [1] https://code.ffmpeg.org/FFmpeg/FFmpeg/src/commit/894da5ca7d742e4429ffb2af534fcda0103ef593/tests/ref/acodec/flac Signed-off-by: Martin Storsjö <[email protected]> --- coreutils/md5_sha1_sum.c | 9 ++++++--- testsuite/sha1sum.tests | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c index 4506aeb56..3073ecddf 100644 --- a/coreutils/md5_sha1_sum.c +++ b/coreutils/md5_sha1_sum.c @@ -159,6 +159,7 @@ enum { #define FLAG_SILENT 1 #define FLAG_CHECK 2 #define FLAG_WARN 4 +#define FLAG_BINARY 8 /* This might be useful elsewhere */ static unsigned char *hash_bin_to_hex(unsigned char *hash_value, @@ -277,13 +278,15 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv) { unsigned char *in_buf; int return_value = EXIT_SUCCESS; - unsigned flags; + unsigned flags = 0; #if ENABLE_SHA3SUM unsigned sha3_width = 224; #endif if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK) { - /* -b "binary", -t "text" are ignored (shaNNNsum compat) */ + /* -b "binary", -t "text" are mostly ignored (shaNNNsum compat); + * the -b flag does set the '*' mode char in the output though, but + * the -t flag doesn't override it. */ /* -s and -w require -c */ #if ENABLE_SHA3SUM if (applet_name[3] == HASH_SHA3 && (!ENABLE_SHA384SUM || applet_name[4] != '8')) @@ -375,7 +378,7 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv) if (hash_value == NULL) { return_value = EXIT_FAILURE; } else { - printf("%s %s\n", hash_value, *argv); + printf("%s %c%s\n", hash_value, flags & FLAG_BINARY ? '*' : ' ', *argv); free(hash_value); } } diff --git a/testsuite/sha1sum.tests b/testsuite/sha1sum.tests index e6ddb2a86..76c7f8288 100755 --- a/testsuite/sha1sum.tests +++ b/testsuite/sha1sum.tests @@ -9,6 +9,10 @@ testing "sha1sum: one-space separated input for -c" \ 'echo "da39a3ee5e6b4b0d3255bfef95601890afd80709 EMPTY" | sha1sum -c' \ "EMPTY: OK\n" \ "" "" +testing "sha1sum: -b flag in output" \ + 'sha1sum -b EMPTY' \ + "da39a3ee5e6b4b0d3255bfef95601890afd80709 *EMPTY\n" \ + "" "" SKIP= rm EMPTY -- 2.43.0 _______________________________________________ busybox mailing list [email protected] https://lists.busybox.net/mailman/listinfo/busybox
