svn commit: trunk/busybox/coreutils

vda at busybox.net vda at busybox.net
Thu Nov 23 15:59:13 UTC 2006


Author: vda
Date: 2006-11-23 07:59:12 -0800 (Thu, 23 Nov 2006)
New Revision: 16648

Log:
md5sum: make -c grok formats like "68b329da9893e34099c7d8ad5cb9c940 *foo".
Also eradicate 95 bytes of bloat.


Modified:
   trunk/busybox/coreutils/md5_sha1_sum.c


Changeset:
Modified: trunk/busybox/coreutils/md5_sha1_sum.c
===================================================================
--- trunk/busybox/coreutils/md5_sha1_sum.c	2006-11-23 15:08:37 UTC (rev 16647)
+++ trunk/busybox/coreutils/md5_sha1_sum.c	2006-11-23 15:59:12 UTC (rev 16648)
@@ -16,17 +16,14 @@
 
 /* This might be useful elsewhere */
 static unsigned char *hash_bin_to_hex(unsigned char *hash_value,
-				unsigned char hash_length)
+				unsigned hash_length)
 {
-	int x, len, max;
-	unsigned char *hex_value;
-
-	max = (hash_length * 2) + 2;
-	hex_value = xmalloc(max);
-	for (x = len = 0; x < hash_length; x++) {
-		len += snprintf((char*)(hex_value + len), max - len, "%02x", hash_value[x]);
+	int len = 0;
+	char *hex_value = xmalloc((hash_length * 2) + 2);
+	while (hash_length--) {
+		len += sprintf(hex_value + len, "%02x", *hash_value++);
 	}
-	return (hex_value);
+	return hex_value;
 }
 
 static uint8_t *hash_file(const char *filename, hash_algo_t hash_algo)
@@ -41,11 +38,13 @@
 	void (*update)(const void*, size_t, void*);
 	void (*final)(void*, void*);
 
-	if (strcmp(filename, "-") == 0) {
-		src_fd = STDIN_FILENO;
-	} else if(0 > (src_fd = open(filename, O_RDONLY))) {
-		bb_perror_msg("%s", filename);
-		return NULL;
+	src_fd = STDIN_FILENO;
+	if (filename[0] != '-' || filename[1]) { /* not "-" */
+		src_fd = open(filename, O_RDONLY);
+		if (src_fd < 0) {
+			bb_perror_msg("%s", filename);
+			return NULL;
+		}
 	}
 
 	/* figure specific hash algorithims */
@@ -63,7 +62,7 @@
 		bb_error_msg_and_die("algorithm not supported");
 	}
 
-	while (0 < (count = read(src_fd, in_buf, 4096))) {
+	while (0 < (count = safe_read(src_fd, in_buf, 4096))) {
 		update(in_buf, count, &context);
 	}
 
@@ -85,7 +84,7 @@
 {
 	int return_value = EXIT_SUCCESS;
 	uint8_t *hash_value;
-	unsigned int flags;
+	unsigned flags;
 	hash_algo_t hash_algo = ENABLE_MD5SUM
 		? (ENABLE_SHA1SUM ? (**argv=='m' ? HASH_MD5 : HASH_SHA1) : HASH_MD5)
 		: HASH_SHA1;
@@ -108,7 +107,7 @@
 		argv[argc++] = "-";
 	}
 
-	if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && flags & FLAG_CHECK) {
+	if (ENABLE_FEATURE_MD5_SHA1_SUM_CHECK && (flags & FLAG_CHECK)) {
 		FILE *pre_computed_stream;
 		int count_total = 0;
 		int count_failed = 0;
@@ -120,9 +119,8 @@
 				("only one argument may be specified when using -c");
 		}
 
-		if (strcmp(file_ptr, "-") == 0) {
-			pre_computed_stream = stdin;
-		} else {
+		pre_computed_stream = stdin;
+		if (file_ptr[0] != '-' || file_ptr[1]) { /* not "-" */
 			pre_computed_stream = xfopen(file_ptr, "r");
 		}
 
@@ -131,7 +129,11 @@
 
 			count_total++;
 			filename_ptr = strstr(line, "  ");
+			/* handle format for binary checksums */
 			if (filename_ptr == NULL) {
+				filename_ptr = strstr(line, " *");
+			}
+			if (filename_ptr == NULL) {
 				if (flags & FLAG_WARN) {
 					bb_error_msg("invalid format");
 				}
@@ -162,9 +164,11 @@
 			bb_error_msg("WARNING: %d of %d computed checksums did NOT match",
 						 count_failed, count_total);
 		}
+		/*
 		if (fclose_if_not_stdin(pre_computed_stream) == EOF) {
 			bb_perror_msg_and_die("cannot close file %s", file_ptr);
 		}
+		*/
 	} else {
 		while (optind < argc) {
 			char *file_ptr = argv[optind++];




More information about the busybox-cvs mailing list