od: shrink a bit

verbose                                               12      13      +1
open_next_file                                       102      99      -3
limit_bytes_to_format                                  4       1      -3
ioerror                                                4       1      -3
flag_pseudo_start                                      4       1      -3
flag_dump_strings                                      4       1      -3
abbreviate_duplicate_blocks                            4       -      -4
check_and_close                                       96      90      -6
od_main                                             2988    2955     -33
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/7 up/down: 1/-58)             Total: -57 bytes
   text    data     bss     dec     hex filename
 781314    1328   11876  794518   c1f96 busybox_old
 781266    1328   11844  794438   c1f46 busybox_unstripped
This commit is contained in:
Denis Vlasenko 2007-07-24 12:28:03 +00:00
parent 1da77728d7
commit bcb66ec22e

View File

@ -153,7 +153,6 @@ static const signed char width_bytes[] = {
sizeof(double),
sizeof(longdouble_t)
};
/* Ensure that for each member of 'enum size_spec' there is an
initializer in the width_bytes array. */
struct dummy {
@ -161,42 +160,37 @@ struct dummy {
[ARRAY_SIZE(width_bytes) == N_SIZE_SPECS ? 1 : -1];
};
static size_t string_min;
static int flag_dump_strings;
static smallint flag_dump_strings;
/* Non-zero if an old-style 'pseudo-address' was specified. */
static int flag_pseudo_start;
/* The difference between the old-style pseudo starting address and
the number of bytes to skip. */
static off_t pseudo_offset;
/* Function that accepts an address and an optional following char,
and prints the address and char to stdout. */
static void (*format_address) (off_t, char);
/* The number of input bytes to skip before formatting and writing. */
static off_t n_bytes_to_skip; // = 0;
/* When zero, MAX_BYTES_TO_FORMAT and END_OFFSET are ignored, and all
input is formatted. */
static int limit_bytes_to_format; // = 0;
/* The maximum number of bytes that will be formatted. */
static off_t max_bytes_to_format;
/* The offset of the first byte after the last byte to be formatted. */
static off_t end_offset;
/* When nonzero and two or more consecutive blocks are equal, format
static smallint flag_pseudo_start;
static smallint limit_bytes_to_format;
/* When zero and two or more consecutive blocks are equal, format
only the first block and output an asterisk alone on the following
line to indicate that identical blocks have been elided. */
static int abbreviate_duplicate_blocks = 1;
static smallint verbose;
static smallint ioerror;
static size_t string_min;
/* An array of specs describing how to format each input block. */
static size_t n_specs;
static struct tspec *spec;
/* Function that accepts an address and an optional following char,
and prints the address and char to stdout. */
static void (*format_address)(off_t, char);
/* The difference between the old-style pseudo starting address and
the number of bytes to skip. */
static off_t pseudo_offset;
/* The number of input bytes to skip before formatting and writing. */
static off_t n_bytes_to_skip;
/* When zero, MAX_BYTES_TO_FORMAT and END_OFFSET are ignored, and all
input is formatted. */
/* The maximum number of bytes that will be formatted. */
static off_t max_bytes_to_format;
/* The offset of the first byte after the last byte to be formatted. */
static off_t end_offset;
/* The number of input bytes formatted per output line. It must be
a multiple of the least common multiple of the sizes associated with
the specified output types. It should be as large as possible, but
@ -217,8 +211,6 @@ static char const *const default_file_list[] = { "-", NULL };
/* The input stream associated with the current file. */
static FILE *in_stream;
static int ioerror;
#define MAX_INTEGRAL_TYPE_SIZE sizeof(ulonglong_t)
static unsigned char integral_type_size[MAX_INTEGRAL_TYPE_SIZE + 1] = {
[sizeof(char)] = CHAR,
@ -907,8 +899,7 @@ write_block(off_t current_offset, size_t n_bytes,
static char prev_pair_equal = 0;
size_t i;
if (abbreviate_duplicate_blocks
&& !first
if (!verbose && !first
&& n_bytes == bytes_per_block
&& memcmp(prev_block, curr_block, bytes_per_block) == 0
) {
@ -1261,7 +1252,7 @@ int od_main(int argc, char **argv)
format_address = format_address_std;
address_base_char = 'o';
address_pad_len_char = '7';
flag_dump_strings = 0;
/* flag_dump_strings = 0; - already is */
/* Parse command line */
opt_complementary = "t::"; // list
@ -1314,7 +1305,7 @@ int od_main(int argc, char **argv)
decode_format_string(lst_t->data);
lst_t = lst_t->link;
}
if (opt & OPT_v) abbreviate_duplicate_blocks = 0;
if (opt & OPT_v) verbose = 1;
if (opt & OPT_x) decode_format_string("x2");
if (opt & OPT_s) decode_format_string("d2");
if (opt & OPT_S) {
@ -1458,5 +1449,5 @@ int od_main(int argc, char **argv)
if (fclose(stdin) == EOF)
bb_perror_msg_and_die(bb_msg_standard_input);
return (ioerror != 0); /* err != 0 - return 1 (failure) */
return ioerror;
}