* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+//usage:#define md5sum_trivial_usage
+//usage: "[FILE]..."
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: md5sum -c [-sw] [FILE]")
+//usage:#define md5sum_full_usage "\n\n"
+//usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums"
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n"
+//usage: "\n -c Check sums against given list"
+//usage: "\n -s Don't output anything, status code shows success"
+//usage: "\n -w Warn about improperly formatted checksum lines"
+//usage: )
+//usage:
+//usage:#define md5sum_example_usage
+//usage: "$ md5sum < busybox\n"
+//usage: "6fd11e98b98a58f64ff3398d7b324003\n"
+//usage: "$ md5sum busybox\n"
+//usage: "6fd11e98b98a58f64ff3398d7b324003 busybox\n"
+//usage: "$ md5sum -c -\n"
+//usage: "6fd11e98b98a58f64ff3398d7b324003 busybox\n"
+//usage: "busybox: OK\n"
+//usage: "^D\n"
+//usage:
+//usage:#define sha1sum_trivial_usage
+//usage: "[FILE]..."
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha1sum -c [-sw] [FILE]")
+//usage:#define sha1sum_full_usage "\n\n"
+//usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums"
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n"
+//usage: "\n -c Check sums against given list"
+//usage: "\n -s Don't output anything, status code shows success"
+//usage: "\n -w Warn about improperly formatted checksum lines"
+//usage: )
+//usage:
+//usage:#define sha256sum_trivial_usage
+//usage: "[FILE]..."
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha256sum -c [-sw] [FILE]")
+//usage:#define sha256sum_full_usage "\n\n"
+//usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA256 checksums"
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n"
+//usage: "\n -c Check sums against given list"
+//usage: "\n -s Don't output anything, status code shows success"
+//usage: "\n -w Warn about improperly formatted checksum lines"
+//usage: )
+//usage:
+//usage:#define sha512sum_trivial_usage
+//usage: "[FILE]..."
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha512sum -c [-sw] [FILE]")
+//usage:#define sha512sum_full_usage "\n\n"
+//usage: "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA512 checksums"
+//usage: IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n"
+//usage: "\n -c Check sums against given list"
+//usage: "\n -s Don't output anything, status code shows success"
+//usage: "\n -w Warn about improperly formatted checksum lines"
+//usage: )
+
#include "libbb.h"
/* This is a NOEXEC applet. Be very careful! */
HASH_SHA512 = '5',
};
-#define FLAG_SILENT 1
-#define FLAG_CHECK 2
-#define FLAG_WARN 4
+#define FLAG_SILENT 1
+#define FLAG_CHECK 2
+#define FLAG_WARN 4
/* This might be useful elsewhere */
static unsigned char *hash_bin_to_hex(unsigned char *hash_value,
md5_ctx_t md5;
} context;
uint8_t *hash_value = NULL;
- RESERVE_CONFIG_UBUFFER(in_buf, 4096);
void FAST_FUNC (*update)(void*, const void*, size_t);
void FAST_FUNC (*final)(void*, void*);
char hash_algo;
hash_algo = applet_name[3];
- /* figure specific hash algorithims */
+ /* figure specific hash algorithms */
if (ENABLE_MD5SUM && hash_algo == HASH_MD5) {
md5_begin(&context.md5);
update = (void*)md5_hash;
xfunc_die(); /* can't reach this */
}
- while ((count = safe_read(src_fd, in_buf, 4096)) > 0) {
- update(&context, in_buf, count);
- }
-
- if (count == 0) {
- final(&context, in_buf);
- hash_value = hash_bin_to_hex(in_buf, hash_len);
+ {
+ RESERVE_CONFIG_UBUFFER(in_buf, 4096);
+ while ((count = safe_read(src_fd, in_buf, 4096)) > 0) {
+ update(&context, in_buf, count);
+ }
+ if (count == 0) {
+ final(&context, in_buf);
+ hash_value = hash_bin_to_hex(in_buf, hash_len);
+ }
+ RELEASE_CONFIG_BUFFER(in_buf);
}
- RELEASE_CONFIG_BUFFER(in_buf);
-
if (src_fd != STDIN_FILENO) {
close(src_fd);
}