uudecode: nuke duplicate base64_table[]. saves 65 bytes

This commit is contained in:
Denis Vlasenko 2007-06-12 07:24:11 +00:00
parent 745119605e
commit aa198dd39c
2 changed files with 10 additions and 8 deletions

View File

@ -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 void read_base64(FILE *src_stream, FILE *dst_stream)
{ {
static const char base64_table[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n";
int term_count = 1; int term_count = 1;
while (1) { while (1) {
@ -80,17 +78,20 @@ static void read_base64(FILE *src_stream, FILE *dst_stream)
char *table_ptr; char *table_ptr;
int ch; int ch;
/* Get next _valid_ character */ /* Get next _valid_ character.
* global vector bb_uuenc_tbl_base64[] contains this string:
* "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n"
*/
do { do {
ch = fgetc(src_stream); ch = fgetc(src_stream);
if (ch == EOF) { if (ch == EOF) {
bb_error_msg_and_die("short file"); 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); } while (table_ptr == NULL);
/* Convert encoded charcter to decimal */ /* Convert encoded character to decimal */
ch = table_ptr - base64_table; ch = table_ptr - bb_uuenc_tbl_base64;
if (*table_ptr == '=') { if (*table_ptr == '=') {
if (term_count == 0) { if (term_count == 0) {

View File

@ -8,7 +8,7 @@
#include "libbb.h" #include "libbb.h"
/* Conversion table. for base 64 */ /* 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', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', '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', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '+', '/', '4', '5', '6', '7', '8', '9', '+', '/',
'=' /* termination character */ '=' /* termination character */,
'\n', '\0' /* needed for uudecode.c */
}; };
const char bb_uuenc_tbl_std[65] = { const char bb_uuenc_tbl_std[65] = {