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 | ||