[BusyBox-cvs] busybox/coreutils sha1sum.c,1.5,1.6

Glenn McGrath bug1 at busybox.net
Sat Jun 7 17:38:36 UTC 2003


Update of /var/cvs/busybox/coreutils
In directory winder:/tmp/cvs-serv2031/coreutils

Modified Files:
	sha1sum.c 
Log Message:
Better error handling


Index: sha1sum.c
===================================================================
RCS file: /var/cvs/busybox/coreutils/sha1sum.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- sha1sum.c	7 Jun 2003 17:11:00 -0000	1.5
+++ sha1sum.c	7 Jun 2003 17:38:33 -0000	1.6
@@ -112,7 +112,7 @@
 	hash[4] += e;
 }
 
-static void sha1sum_stream(FILE *fd, unsigned int *hashval)
+static char sha1sum_stream(FILE *fd, unsigned int *hashval)
 {
 	RESERVE_CONFIG_BUFFER(buffer, 64);
 	int length = 0;
@@ -145,7 +145,7 @@
 
 	RELEASE_CONFIG_BUFFER(buffer);
 
-	return;
+	return(EXIT_SUCCESS);
 }
 
 static void print_hash(unsigned int *hash_value, unsigned char hash_length, unsigned char *filename)
@@ -167,11 +167,12 @@
 /* This should become a common function used by sha1sum and md5sum,
  * it needs extra functionality first
  */
-extern int authenticate(int argc, char **argv, void (*hash_ptr)(FILE *stream, unsigned int *hashval), const unsigned char hash_length)
+extern int authenticate(int argc, char **argv, char (*hash_ptr)(FILE *stream, unsigned int *hashval), const unsigned char hash_length)
 {
 	unsigned int hash_value[hash_length];
 	unsigned char flags = 0;
 	int opt;
+	int return_value;
 
 	while ((opt = getopt(argc, argv, "sc:w")) != -1) {
 		switch (opt) {
@@ -193,31 +194,37 @@
 		argv[argc++] = "-";
 	}
 
+	return_value = EXIT_SUCCESS;
 	while (optind < argc) {
 		FILE *stream;
 		unsigned char *file_ptr = argv[optind];
 
+		optind++;
+
 		if ((file_ptr[0] == '-') && (file_ptr[1] == '\0')) {
 			stream = stdin;
 		} else {
 			stream = bb_wfopen(file_ptr, "r");
 			if (stream == NULL) {
-				return(EXIT_FAILURE);
+				return_value = EXIT_FAILURE;
+				continue;
 			}
 		}
-		hash_ptr(stream, hash_value);
-		if (!flags & FLAG_SILENT) {
+		if (hash_ptr(stream, hash_value) == EXIT_FAILURE) {
+			return_value = EXIT_FAILURE;
+		}
+		else if (!flags & FLAG_SILENT) {
 			print_hash(hash_value, hash_length, file_ptr);
 		}
 
 		if (fclose(stream) == EOF) {
-			bb_perror_msg_and_die("Couldnt close file %s", file_ptr);
+			bb_perror_msg("Couldnt close file %s", file_ptr);
+			return_value = EXIT_FAILURE;
 		}
 
-		optind++;
 	}
 
-	return(EXIT_SUCCESS);
+	return(return_value);
 }
 
 extern int sha1sum_main(int argc, char **argv)



More information about the busybox-cvs mailing list