X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=md5sum.c;h=a9bbdef369f1c0b3b344f112a3bdde72d41bc466;hb=30592a54514ca52253ed5f2eff64684e32d7ff05;hp=ad4078040138da8e9dfd2587f0e8da5340dc27f3;hpb=59ab025363d884deb2013dcaae6c968585a6ec72;p=oweals%2Fbusybox.git diff --git a/md5sum.c b/md5sum.c index ad4078040..a9bbdef36 100644 --- a/md5sum.c +++ b/md5sum.c @@ -20,11 +20,11 @@ /* Written by Ulrich Drepper */ /* Hacked to work with BusyBox by Alfred M. Szmidt */ -#include "busybox.h" #include #include #include #include +#include "busybox.h" /* For some silly reason, this file uses backwards TRUE and FALSE conventions */ #undef TRUE @@ -181,7 +181,14 @@ extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock)); //--------end of md5.h //---------------------------------------------------------------------------- -#define SWAP(n) (n) +/* Handle endian-ness */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + #define SWAP(n) (n) +#else + #define SWAP(n) ((n << 24) | ((n&65280)<<8) | ((n&16711680)>>8) | (n>>24)) +#endif + + /* This array contains the bytes used to pad the buffer to the next 64-byte boundary. (RFC 1321, 3.1: Step 1) */ @@ -719,7 +726,7 @@ static int md5_check(const char *checkfile_name) if (split_3(line, line_length, &md5num, &binary, &filename) || !hex_digits(md5num)) { if (warn) { - error_msg("%s: %lu: improperly formatted MD5 checksum line\n", + error_msg("%s: %lu: improperly formatted MD5 checksum line", checkfile_name, (unsigned long) line_number); } } else { @@ -764,7 +771,7 @@ static int md5_check(const char *checkfile_name) while (!feof(checkfile_stream) && !ferror(checkfile_stream)); if (ferror(checkfile_stream)) { - error_msg("%s: read error\n", checkfile_name); /* */ + error_msg("%s: read error", checkfile_name); return FALSE; } @@ -775,7 +782,7 @@ static int md5_check(const char *checkfile_name) if (n_properly_formated_lines == 0) { /* Warn if no tests are found. */ - error_msg("%s: no properly formatted MD5 checksum lines found\n", + error_msg("%s: no properly formatted MD5 checksum lines found", checkfile_name); return FALSE; } else { @@ -784,13 +791,13 @@ static int md5_check(const char *checkfile_name) - n_open_or_read_failures); if (n_open_or_read_failures > 0) { - error_msg("WARNING: %d of %d listed files could not be read\n", + error_msg("WARNING: %d of %d listed files could not be read", n_open_or_read_failures, n_properly_formated_lines); return FALSE; } if (n_mismatched_checksums > 0) { - error_msg("WARNING: %d of %d computed checksums did NOT match\n", + error_msg("WARNING: %d of %d computed checksums did NOT match", n_mismatched_checksums, n_computed_checkums); return FALSE; } @@ -819,8 +826,6 @@ int md5sum_main(int argc, if (string == NULL) string = (char **) xmalloc ((argc - 1) * sizeof (char *)); - if (optarg == NULL) - optarg = ""; string[n_strings++] = optarg; break; } @@ -850,31 +855,31 @@ int md5sum_main(int argc, break; default: - usage(md5sum_usage); + show_usage(); } } if (file_type_specified && do_check) { - error_msg_and_die("the -b and -t options are meaningless when verifying checksums\n"); + error_msg_and_die("the -b and -t options are meaningless when verifying checksums"); } if (n_strings > 0 && do_check) { - error_msg_and_die("the -g and -c options are mutually exclusive\n"); + error_msg_and_die("the -g and -c options are mutually exclusive"); } if (status_only && !do_check) { - error_msg_and_die("the -s option is meaningful only when verifying checksums\n"); + error_msg_and_die("the -s option is meaningful only when verifying checksums"); } if (warn && !do_check) { - error_msg_and_die("the -w option is meaningful only when verifying checksums\n"); + error_msg_and_die("the -w option is meaningful only when verifying checksums"); } if (n_strings > 0) { size_t i; if (optind < argc) { - error_msg_and_die("no files may be specified when using -g\n"); + error_msg_and_die("no files may be specified when using -g"); } for (i = 0; i < n_strings; ++i) { size_t cnt; @@ -887,7 +892,7 @@ int md5sum_main(int argc, } } else if (do_check) { if (optind + 1 < argc) { - error_msg("only one argument may be specified when using -c\n"); + error_msg("only one argument may be specified when using -c"); } err = md5_check ((optind == argc) ? "-" : argv[optind]); @@ -901,7 +906,12 @@ int md5sum_main(int argc, fail = md5_file (file, binary, md5buffer); err |= fail; - if (!fail) { + if (!fail && STREQ(file, "-")) { + size_t i; + for (i = 0; i < 16; ++i) + printf ("%02x", md5buffer[i]); + putchar ('\n'); + } else if (!fail) { size_t i; /* Output a leading backslash if the file name contains a newline or backslash. */ @@ -940,11 +950,11 @@ int md5sum_main(int argc, } if (fclose (stdout) == EOF) { - error_msg_and_die("write error\n"); + error_msg_and_die("write error"); } if (have_read_stdin && fclose (stdin) == EOF) { - error_msg_and_die("standard input\n"); + error_msg_and_die("standard input"); } if (err == 0)