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:
parent
1da77728d7
commit
bcb66ec22e
@ -153,7 +153,6 @@ static const signed char width_bytes[] = {
|
|||||||
sizeof(double),
|
sizeof(double),
|
||||||
sizeof(longdouble_t)
|
sizeof(longdouble_t)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Ensure that for each member of 'enum size_spec' there is an
|
/* Ensure that for each member of 'enum size_spec' there is an
|
||||||
initializer in the width_bytes array. */
|
initializer in the width_bytes array. */
|
||||||
struct dummy {
|
struct dummy {
|
||||||
@ -161,42 +160,37 @@ struct dummy {
|
|||||||
[ARRAY_SIZE(width_bytes) == N_SIZE_SPECS ? 1 : -1];
|
[ARRAY_SIZE(width_bytes) == N_SIZE_SPECS ? 1 : -1];
|
||||||
};
|
};
|
||||||
|
|
||||||
static size_t string_min;
|
static smallint flag_dump_strings;
|
||||||
static int flag_dump_strings;
|
|
||||||
|
|
||||||
/* Non-zero if an old-style 'pseudo-address' was specified. */
|
/* Non-zero if an old-style 'pseudo-address' was specified. */
|
||||||
static int flag_pseudo_start;
|
static smallint flag_pseudo_start;
|
||||||
|
static smallint limit_bytes_to_format;
|
||||||
/* The difference between the old-style pseudo starting address and
|
/* When zero and two or more consecutive blocks are equal, format
|
||||||
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
|
|
||||||
only the first block and output an asterisk alone on the following
|
only the first block and output an asterisk alone on the following
|
||||||
line to indicate that identical blocks have been elided. */
|
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. */
|
/* An array of specs describing how to format each input block. */
|
||||||
static size_t n_specs;
|
static size_t n_specs;
|
||||||
static struct tspec *spec;
|
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
|
/* The number of input bytes formatted per output line. It must be
|
||||||
a multiple of the least common multiple of the sizes associated with
|
a multiple of the least common multiple of the sizes associated with
|
||||||
the specified output types. It should be as large as possible, but
|
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. */
|
/* The input stream associated with the current file. */
|
||||||
static FILE *in_stream;
|
static FILE *in_stream;
|
||||||
|
|
||||||
static int ioerror;
|
|
||||||
|
|
||||||
#define MAX_INTEGRAL_TYPE_SIZE sizeof(ulonglong_t)
|
#define MAX_INTEGRAL_TYPE_SIZE sizeof(ulonglong_t)
|
||||||
static unsigned char integral_type_size[MAX_INTEGRAL_TYPE_SIZE + 1] = {
|
static unsigned char integral_type_size[MAX_INTEGRAL_TYPE_SIZE + 1] = {
|
||||||
[sizeof(char)] = CHAR,
|
[sizeof(char)] = CHAR,
|
||||||
@ -907,8 +899,7 @@ write_block(off_t current_offset, size_t n_bytes,
|
|||||||
static char prev_pair_equal = 0;
|
static char prev_pair_equal = 0;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (abbreviate_duplicate_blocks
|
if (!verbose && !first
|
||||||
&& !first
|
|
||||||
&& n_bytes == bytes_per_block
|
&& n_bytes == bytes_per_block
|
||||||
&& memcmp(prev_block, curr_block, bytes_per_block) == 0
|
&& 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;
|
format_address = format_address_std;
|
||||||
address_base_char = 'o';
|
address_base_char = 'o';
|
||||||
address_pad_len_char = '7';
|
address_pad_len_char = '7';
|
||||||
flag_dump_strings = 0;
|
/* flag_dump_strings = 0; - already is */
|
||||||
|
|
||||||
/* Parse command line */
|
/* Parse command line */
|
||||||
opt_complementary = "t::"; // list
|
opt_complementary = "t::"; // list
|
||||||
@ -1314,7 +1305,7 @@ int od_main(int argc, char **argv)
|
|||||||
decode_format_string(lst_t->data);
|
decode_format_string(lst_t->data);
|
||||||
lst_t = lst_t->link;
|
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_x) decode_format_string("x2");
|
||||||
if (opt & OPT_s) decode_format_string("d2");
|
if (opt & OPT_s) decode_format_string("d2");
|
||||||
if (opt & OPT_S) {
|
if (opt & OPT_S) {
|
||||||
@ -1458,5 +1449,5 @@ int od_main(int argc, char **argv)
|
|||||||
if (fclose(stdin) == EOF)
|
if (fclose(stdin) == EOF)
|
||||||
bb_perror_msg_and_die(bb_msg_standard_input);
|
bb_perror_msg_and_die(bb_msg_standard_input);
|
||||||
|
|
||||||
return (ioerror != 0); /* err != 0 - return 1 (failure) */
|
return ioerror;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user