diff options
| author | Glenn L McGrath <bug1@ihug.co.nz> | 2003-11-18 23:56:41 +0000 |
|---|---|---|
| committer | Glenn L McGrath <bug1@ihug.co.nz> | 2003-11-18 23:56:41 +0000 |
| commit | 931ae9d2f8a5d2e0ae88b33067f761b36d30e070 (patch) | |
| tree | a5612f823a6780bae4a206ea93fda07af88ab8a5 /coreutils | |
| parent | 0c5d9c27a5f53311db93d0644418dc09bf8d5fed (diff) | |
| download | busybox-w32-931ae9d2f8a5d2e0ae88b33067f761b36d30e070.tar.gz busybox-w32-931ae9d2f8a5d2e0ae88b33067f761b36d30e070.tar.bz2 busybox-w32-931ae9d2f8a5d2e0ae88b33067f761b36d30e070.zip | |
woops, we needed that function
Diffstat (limited to 'coreutils')
| -rw-r--r-- | coreutils/md5_sha1_sum.c | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c index 9a243a26e..42a1d7acf 100644 --- a/coreutils/md5_sha1_sum.c +++ b/coreutils/md5_sha1_sum.c | |||
| @@ -47,10 +47,43 @@ static unsigned char *hash_bin_to_hex(unsigned char *hash_value, | |||
| 47 | return (hex_value); | 47 | return (hex_value); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | static uint8_t *hash_file(const char *filename, uint8_t hash_algo) | ||
| 51 | { | ||
| 52 | uint8_t *hash_value_bin; | ||
| 53 | uint8_t *hash_value = NULL; | ||
| 54 | uint8_t hash_length; | ||
| 55 | int src_fd; | ||
| 56 | |||
| 57 | if (strcmp(filename, "-") == 0) { | ||
| 58 | src_fd = fileno(stdin); | ||
| 59 | } else { | ||
| 60 | src_fd = open(filename, O_RDONLY); | ||
| 61 | } | ||
| 62 | |||
| 63 | if (hash_algo == HASH_MD5) { | ||
| 64 | hash_length = 16; | ||
| 65 | } else { | ||
| 66 | hash_length = 20; | ||
| 67 | } | ||
| 68 | |||
| 69 | hash_value_bin = xmalloc(hash_length); | ||
| 70 | |||
| 71 | if ((src_fd != -1) && (hash_fd(src_fd, -1, hash_algo, hash_value_bin) != -2)) { | ||
| 72 | hash_value = hash_bin_to_hex(hash_value_bin, hash_length); | ||
| 73 | } else { | ||
| 74 | bb_perror_msg("%s", filename); | ||
| 75 | } | ||
| 76 | |||
| 77 | close(src_fd); | ||
| 78 | |||
| 79 | return(hash_value); | ||
| 80 | } | ||
| 81 | |||
| 50 | /* This could become a common function for md5 as well, by using md5_stream */ | 82 | /* This could become a common function for md5 as well, by using md5_stream */ |
| 51 | extern int hash_files(int argc, char **argv, const uint8_t hash_algo) | 83 | extern int hash_files(int argc, char **argv, const uint8_t hash_algo) |
| 52 | { | 84 | { |
| 53 | int return_value = EXIT_SUCCESS; | 85 | int return_value = EXIT_SUCCESS; |
| 86 | uint8_t *hash_value; | ||
| 54 | 87 | ||
| 55 | #ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK | 88 | #ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK |
| 56 | unsigned int flags; | 89 | unsigned int flags; |
| @@ -129,7 +162,6 @@ extern int hash_files(int argc, char **argv, const uint8_t hash_algo) | |||
| 129 | } else | 162 | } else |
| 130 | #endif | 163 | #endif |
| 131 | { | 164 | { |
| 132 | uint8_t *hash_value_bin; | ||
| 133 | uint8_t hash_length; | 165 | uint8_t hash_length; |
| 134 | 166 | ||
| 135 | if (hash_algo == HASH_MD5) { | 167 | if (hash_algo == HASH_MD5) { |
| @@ -137,27 +169,12 @@ extern int hash_files(int argc, char **argv, const uint8_t hash_algo) | |||
| 137 | } else { | 169 | } else { |
| 138 | hash_length = 20; | 170 | hash_length = 20; |
| 139 | } | 171 | } |
| 140 | hash_value_bin = xmalloc(hash_length); | 172 | hash_value = xmalloc(hash_length); |
| 141 | 173 | ||
| 142 | while (optind < argc) { | 174 | while (optind < argc) { |
| 143 | unsigned char *file_ptr = argv[optind++]; | 175 | unsigned char *file_ptr = argv[optind++]; |
| 144 | uint8_t *hash_value; | ||
| 145 | int src_fd; | ||
| 146 | |||
| 147 | if ((file_ptr[0] == '-') && (file_ptr[1] == '\0')) { | ||
| 148 | src_fd = fileno(stdin); | ||
| 149 | } else { | ||
| 150 | src_fd = open(file_ptr, O_RDONLY); | ||
| 151 | } | ||
| 152 | |||
| 153 | if ((src_fd != -1) && (hash_fd(src_fd, -1, hash_algo, hash_value_bin) != -2)) { | ||
| 154 | hash_value = hash_bin_to_hex(hash_value_bin, hash_length); | ||
| 155 | } else { | ||
| 156 | bb_perror_msg("%s", file_ptr); | ||
| 157 | continue; | ||
| 158 | } | ||
| 159 | close(src_fd); | ||
| 160 | 176 | ||
| 177 | hash_value = hash_file(file_ptr, hash_algo); | ||
| 161 | if (hash_value == NULL) { | 178 | if (hash_value == NULL) { |
| 162 | return_value++; | 179 | return_value++; |
| 163 | } else { | 180 | } else { |
