uudecode: nuke duplicate base64_table[]. saves 65 bytes
No binary (build failed)
—
(log yok)
| @@ -68,8 +68,6 @@ static void read_stduu(FILE *src_stream, FILE *dst_stream) | |
| static void read_base64(FILE *src_stream, FILE *dst_stream) | |
| { | |
| - | static const char base64_table[] = |
| - | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n"; |
| int term_count = 1; | |
| while (1) { | |
| @@ -80,17 +78,20 @@ static void read_base64(FILE *src_stream, FILE *dst_stream) | |
| char *table_ptr; | |
| int ch; | |
| - | /* Get next _valid_ character */ |
| + | /* Get next _valid_ character. |
| + | * global vector bb_uuenc_tbl_base64[] contains this string: |
| + | * "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n" |
| + | */ |
| do { | |
| ch = fgetc(src_stream); | |
| if (ch == EOF) { | |
| bb_error_msg_and_die("short file"); | |
| } | |
| - | table_ptr = strchr(base64_table, ch); |
| + | table_ptr = strchr(bb_uuenc_tbl_base64, ch); |
| } while (table_ptr == NULL); | |
| - | /* Convert encoded charcter to decimal */ |
| - | ch = table_ptr - base64_table; |
| + | /* Convert encoded character to decimal */ |
| + | ch = table_ptr - bb_uuenc_tbl_base64; |
| if (*table_ptr == '=') { | |
| if (term_count == 0) { | |
| @@ -8,7 +8,7 @@ | |
| #include "libbb.h" | |
| /* Conversion table. for base 64 */ | |
| - | const char bb_uuenc_tbl_base64[65] = { |
| + | const char bb_uuenc_tbl_base64[65 + 2] = { |
| 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', | |
| 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', | |
| 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', | |
| @@ -17,7 +17,8 @@ const char bb_uuenc_tbl_base64[65] = { | |
| 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', | |
| 'w', 'x', 'y', 'z', '0', '1', '2', '3', | |
| '4', '5', '6', '7', '8', '9', '+', '/', | |
| - | '=' /* termination character */ |
| + | '=' /* termination character */, |
| + | '\n', '\0' /* needed for uudecode.c */ |
| }; | |
| const char bb_uuenc_tbl_std[65] = { | |