diff options
| author | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2003-06-07 17:38:33 +0000 |
|---|---|---|
| committer | bug1 <bug1@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2003-06-07 17:38:33 +0000 |
| commit | 6ca27eadc2fef29b75a973bb263da70ca2e72564 (patch) | |
| tree | 431ea4e9635339feefe6ff6a94b031c0c14a62e6 | |
| parent | 6adac90488dcea7fe1b18a7942f2ef4befbc730c (diff) | |
| download | busybox-w32-6ca27eadc2fef29b75a973bb263da70ca2e72564.tar.gz busybox-w32-6ca27eadc2fef29b75a973bb263da70ca2e72564.tar.bz2 busybox-w32-6ca27eadc2fef29b75a973bb263da70ca2e72564.zip | |
Better error handling
git-svn-id: svn://busybox.net/trunk/busybox@6900 69ca8d6d-28ef-0310-b511-8ec308f3f277
| -rw-r--r-- | coreutils/sha1sum.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/coreutils/sha1sum.c b/coreutils/sha1sum.c index c6534b5cb..1c31e3c55 100644 --- a/coreutils/sha1sum.c +++ b/coreutils/sha1sum.c | |||
| @@ -112,7 +112,7 @@ static void sha_hash(unsigned int *data, int *hash) | |||
| 112 | hash[4] += e; | 112 | hash[4] += e; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | static void sha1sum_stream(FILE *fd, unsigned int *hashval) | 115 | static char sha1sum_stream(FILE *fd, unsigned int *hashval) |
| 116 | { | 116 | { |
| 117 | RESERVE_CONFIG_BUFFER(buffer, 64); | 117 | RESERVE_CONFIG_BUFFER(buffer, 64); |
| 118 | int length = 0; | 118 | int length = 0; |
| @@ -145,7 +145,7 @@ static void sha1sum_stream(FILE *fd, unsigned int *hashval) | |||
| 145 | 145 | ||
| 146 | RELEASE_CONFIG_BUFFER(buffer); | 146 | RELEASE_CONFIG_BUFFER(buffer); |
| 147 | 147 | ||
| 148 | return; | 148 | return(EXIT_SUCCESS); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | static void print_hash(unsigned int *hash_value, unsigned char hash_length, unsigned char *filename) | 151 | static void print_hash(unsigned int *hash_value, unsigned char hash_length, unsigned char *filename) |
| @@ -167,11 +167,12 @@ static void print_hash(unsigned int *hash_value, unsigned char hash_length, unsi | |||
| 167 | /* This should become a common function used by sha1sum and md5sum, | 167 | /* This should become a common function used by sha1sum and md5sum, |
| 168 | * it needs extra functionality first | 168 | * it needs extra functionality first |
| 169 | */ | 169 | */ |
| 170 | extern int authenticate(int argc, char **argv, void (*hash_ptr)(FILE *stream, unsigned int *hashval), const unsigned char hash_length) | 170 | extern int authenticate(int argc, char **argv, char (*hash_ptr)(FILE *stream, unsigned int *hashval), const unsigned char hash_length) |
| 171 | { | 171 | { |
| 172 | unsigned int hash_value[hash_length]; | 172 | unsigned int hash_value[hash_length]; |
| 173 | unsigned char flags = 0; | 173 | unsigned char flags = 0; |
| 174 | int opt; | 174 | int opt; |
| 175 | int return_value; | ||
| 175 | 176 | ||
| 176 | while ((opt = getopt(argc, argv, "sc:w")) != -1) { | 177 | while ((opt = getopt(argc, argv, "sc:w")) != -1) { |
| 177 | switch (opt) { | 178 | switch (opt) { |
| @@ -193,31 +194,37 @@ extern int authenticate(int argc, char **argv, void (*hash_ptr)(FILE *stream, un | |||
| 193 | argv[argc++] = "-"; | 194 | argv[argc++] = "-"; |
| 194 | } | 195 | } |
| 195 | 196 | ||
| 197 | return_value = EXIT_SUCCESS; | ||
| 196 | while (optind < argc) { | 198 | while (optind < argc) { |
| 197 | FILE *stream; | 199 | FILE *stream; |
| 198 | unsigned char *file_ptr = argv[optind]; | 200 | unsigned char *file_ptr = argv[optind]; |
| 199 | 201 | ||
| 202 | optind++; | ||
| 203 | |||
| 200 | if ((file_ptr[0] == '-') && (file_ptr[1] == '\0')) { | 204 | if ((file_ptr[0] == '-') && (file_ptr[1] == '\0')) { |
| 201 | stream = stdin; | 205 | stream = stdin; |
| 202 | } else { | 206 | } else { |
| 203 | stream = bb_wfopen(file_ptr, "r"); | 207 | stream = bb_wfopen(file_ptr, "r"); |
| 204 | if (stream == NULL) { | 208 | if (stream == NULL) { |
| 205 | return(EXIT_FAILURE); | 209 | return_value = EXIT_FAILURE; |
| 210 | continue; | ||
| 206 | } | 211 | } |
| 207 | } | 212 | } |
| 208 | hash_ptr(stream, hash_value); | 213 | if (hash_ptr(stream, hash_value) == EXIT_FAILURE) { |
| 209 | if (!flags & FLAG_SILENT) { | 214 | return_value = EXIT_FAILURE; |
| 215 | } | ||
| 216 | else if (!flags & FLAG_SILENT) { | ||
| 210 | print_hash(hash_value, hash_length, file_ptr); | 217 | print_hash(hash_value, hash_length, file_ptr); |
| 211 | } | 218 | } |
| 212 | 219 | ||
| 213 | if (fclose(stream) == EOF) { | 220 | if (fclose(stream) == EOF) { |
| 214 | bb_perror_msg_and_die("Couldnt close file %s", file_ptr); | 221 | bb_perror_msg("Couldnt close file %s", file_ptr); |
| 222 | return_value = EXIT_FAILURE; | ||
| 215 | } | 223 | } |
| 216 | 224 | ||
| 217 | optind++; | ||
| 218 | } | 225 | } |
| 219 | 226 | ||
| 220 | return(EXIT_SUCCESS); | 227 | return(return_value); |
| 221 | } | 228 | } |
| 222 | 229 | ||
| 223 | extern int sha1sum_main(int argc, char **argv) | 230 | extern int sha1sum_main(int argc, char **argv) |
