diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-16 11:00:16 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-16 11:00:16 +0000 |
| commit | 55f7912ddaea7c21068a48841a6eb933e5f286ee (patch) | |
| tree | 8e048772811061a8db2429c3ef99e8205e1de1f6 /coreutils | |
| parent | 8ddb6410edb0c4e87b4c6b9d0887868977c8eff5 (diff) | |
| download | busybox-w32-55f7912ddaea7c21068a48841a6eb933e5f286ee.tar.gz busybox-w32-55f7912ddaea7c21068a48841a6eb933e5f286ee.tar.bz2 busybox-w32-55f7912ddaea7c21068a48841a6eb933e5f286ee.zip | |
libbb: get rid of statics in dump.c; code shrinks a lot too
function old new delta
alloc_dumper - 26 +26
hexdump_main 600 601 +1
static.done 1 - -1
static.ateof 1 - -1
bb_dump_vflag 1 - -1
static.savp 4 - -4
static.nextfs 4 - -4
static.curp 4 - -4
exitval 4 - -4
endfu 4 - -4
bb_dump_length 4 - -4
bb_dump_fshead 4 - -4
bb_dump_blocksize 4 - -4
_argv 4 - -4
bb_dump_add 365 358 -7
savaddress 8 - -8
eaddress 8 - -8
bb_dump_skip 8 - -8
address 8 - -8
bb_dump_dump 2748 2672 -76
next 538 445 -93
------------------------------------------------------------------------------
(add/remove: 1/16 grow/shrink: 1/3 up/down: 27/-247) Total: -220 bytes
text data bss dec hex filename
789458 607 6764 796829 c289d busybox_old
789309 601 6696 796606 c27be busybox_unstripped
Diffstat (limited to 'coreutils')
| -rw-r--r-- | coreutils/od.c | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/coreutils/od.c b/coreutils/od.c index 94a6b95df..e4179a36d 100644 --- a/coreutils/od.c +++ b/coreutils/od.c | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | #define ishexdigit(c) (isxdigit)(c) | 24 | #define ishexdigit(c) (isxdigit)(c) |
| 25 | 25 | ||
| 26 | static void | 26 | static void |
| 27 | odoffset(int argc, char ***argvp) | 27 | odoffset(dumper_t *dumper, int argc, char ***argvp) |
| 28 | { | 28 | { |
| 29 | char *num, *p; | 29 | char *num, *p; |
| 30 | int base; | 30 | int base; |
| @@ -57,7 +57,7 @@ odoffset(int argc, char ***argvp) | |||
| 57 | 57 | ||
| 58 | base = 0; | 58 | base = 0; |
| 59 | /* | 59 | /* |
| 60 | * bb_dump_skip over leading '+', 'x[0-9a-fA-f]' or '0x', and | 60 | * skip over leading '+', 'x[0-9a-fA-f]' or '0x', and |
| 61 | * set base. | 61 | * set base. |
| 62 | */ | 62 | */ |
| 63 | if (p[0] == '+') | 63 | if (p[0] == '+') |
| @@ -70,11 +70,13 @@ odoffset(int argc, char ***argvp) | |||
| 70 | base = 16; | 70 | base = 16; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | /* bb_dump_skip over the number */ | 73 | /* skip over the number */ |
| 74 | if (base == 16) | 74 | if (base == 16) |
| 75 | for (num = p; ishexdigit(*p); ++p); | 75 | for (num = p; ishexdigit(*p); ++p) |
| 76 | continue; | ||
| 76 | else | 77 | else |
| 77 | for (num = p; isdecdigit(*p); ++p); | 78 | for (num = p; isdecdigit(*p); ++p) |
| 79 | continue; | ||
| 78 | 80 | ||
| 79 | /* check for no number */ | 81 | /* check for no number */ |
| 80 | if (num == p) | 82 | if (num == p) |
| @@ -87,23 +89,23 @@ odoffset(int argc, char ***argvp) | |||
| 87 | base = 10; | 89 | base = 10; |
| 88 | } | 90 | } |
| 89 | 91 | ||
| 90 | bb_dump_skip = strtol(num, &end, base ? base : 8); | 92 | dumper->dump_skip = strtol(num, &end, base ? base : 8); |
| 91 | 93 | ||
| 92 | /* if end isn't the same as p, we got a non-octal digit */ | 94 | /* if end isn't the same as p, we got a non-octal digit */ |
| 93 | if (end != p) | 95 | if (end != p) |
| 94 | bb_dump_skip = 0; | 96 | dumper->dump_skip = 0; |
| 95 | else { | 97 | else { |
| 96 | if (*p) { | 98 | if (*p) { |
| 97 | if (*p == 'b') { | 99 | if (*p == 'b') { |
| 98 | bb_dump_skip *= 512; | 100 | dumper->dump_skip *= 512; |
| 99 | ++p; | 101 | ++p; |
| 100 | } else if (*p == 'B') { | 102 | } else if (*p == 'B') { |
| 101 | bb_dump_skip *= 1024; | 103 | dumper->dump_skip *= 1024; |
| 102 | ++p; | 104 | ++p; |
| 103 | } | 105 | } |
| 104 | } | 106 | } |
| 105 | if (*p) | 107 | if (*p) |
| 106 | bb_dump_skip = 0; | 108 | dumper->dump_skip = 0; |
| 107 | else { | 109 | else { |
| 108 | ++*argvp; | 110 | ++*argvp; |
| 109 | /* | 111 | /* |
| @@ -120,9 +122,9 @@ odoffset(int argc, char ***argvp) | |||
| 120 | } | 122 | } |
| 121 | if (base == 10) { | 123 | if (base == 10) { |
| 122 | x_or_d = 'd'; | 124 | x_or_d = 'd'; |
| 123 | DO_X_OR_D: | 125 | DO_X_OR_D: |
| 124 | bb_dump_fshead->nextfu->fmt[TYPE_OFFSET] | 126 | dumper->fshead->nextfu->fmt[TYPE_OFFSET] |
| 125 | = bb_dump_fshead->nextfs->nextfu->fmt[TYPE_OFFSET] | 127 | = dumper->fshead->nextfs->nextfu->fmt[TYPE_OFFSET] |
| 126 | = x_or_d; | 128 | = x_or_d; |
| 127 | } | 129 | } |
| 128 | } | 130 | } |
| @@ -161,36 +163,35 @@ int od_main(int argc, char **argv) | |||
| 161 | int ch; | 163 | int ch; |
| 162 | int first = 1; | 164 | int first = 1; |
| 163 | char *p; | 165 | char *p; |
| 164 | bb_dump_vflag = FIRST; | 166 | dumper_t *dumper = alloc_dumper(); |
| 165 | bb_dump_length = -1; | ||
| 166 | 167 | ||
| 167 | while ((ch = getopt(argc, argv, od_opts)) > 0) { | 168 | while ((ch = getopt(argc, argv, od_opts)) > 0) { |
| 168 | if (ch == 'v') { | 169 | if (ch == 'v') { |
| 169 | bb_dump_vflag = ALL; | 170 | dumper->dump_vflag = ALL; |
| 170 | } else if (((p = strchr(od_opts, ch)) != NULL) && (*p != '\0')) { | 171 | } else if (((p = strchr(od_opts, ch)) != NULL) && (*p != '\0')) { |
| 171 | if (first) { | 172 | if (first) { |
| 172 | first = 0; | 173 | first = 0; |
| 173 | bb_dump_add("\"%07.7_Ao\n\""); | 174 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); |
| 174 | bb_dump_add("\"%07.7_ao \""); | 175 | bb_dump_add(dumper, "\"%07.7_ao \""); |
| 175 | } else { | 176 | } else { |
| 176 | bb_dump_add("\" \""); | 177 | bb_dump_add(dumper, "\" \""); |
| 177 | } | 178 | } |
| 178 | bb_dump_add(add_strings[(int)od_o2si[(p-od_opts)]]); | 179 | bb_dump_add(dumper, add_strings[(int)od_o2si[(p - od_opts)]]); |
| 179 | } else { /* P, p, s, w, or other unhandled */ | 180 | } else { /* P, p, s, w, or other unhandled */ |
| 180 | bb_show_usage(); | 181 | bb_show_usage(); |
| 181 | } | 182 | } |
| 182 | } | 183 | } |
| 183 | if (!bb_dump_fshead) { | 184 | if (!dumper->fshead) { |
| 184 | bb_dump_add("\"%07.7_Ao\n\""); | 185 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); |
| 185 | bb_dump_add("\"%07.7_ao \" 8/2 \"%06o \" \"\\n\""); | 186 | bb_dump_add(dumper, "\"%07.7_ao \" 8/2 \"%06o \" \"\\n\""); |
| 186 | } | 187 | } |
| 187 | 188 | ||
| 188 | argc -= optind; | 189 | argc -= optind; |
| 189 | argv += optind; | 190 | argv += optind; |
| 190 | 191 | ||
| 191 | odoffset(argc, &argv); | 192 | odoffset(dumper, argc, &argv); |
| 192 | 193 | ||
| 193 | return bb_dump_dump(argv); | 194 | return bb_dump_dump(dumper, argv); |
| 194 | } | 195 | } |
| 195 | #endif /* ENABLE_DESKTOP */ | 196 | #endif /* ENABLE_DESKTOP */ |
| 196 | 197 | ||
