diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-15 10:18:01 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-06-15 10:18:01 +0200 |
| commit | 237aecedabb05abb199018c1e08b645b594bbff9 (patch) | |
| tree | 6d3fc373517dff3d7f84d73aacb91b0032573203 | |
| parent | f7e929e795c433014f76e4be808776e6dc968cbc (diff) | |
| download | busybox-w32-237aecedabb05abb199018c1e08b645b594bbff9.tar.gz busybox-w32-237aecedabb05abb199018c1e08b645b594bbff9.tar.bz2 busybox-w32-237aecedabb05abb199018c1e08b645b594bbff9.zip | |
xargs: another code shrink
function old new delta
process0_stdin 117 103 -14
process_stdin 336 314 -22
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | findutils/xargs.c | 50 |
1 files changed, 20 insertions, 30 deletions
diff --git a/findutils/xargs.c b/findutils/xargs.c index d9f8a3b18..8caaff91c 100644 --- a/findutils/xargs.c +++ b/findutils/xargs.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | //kbuild:lib-$(CONFIG_XARGS) += xargs.o | 20 | //kbuild:lib-$(CONFIG_XARGS) += xargs.o |
| 21 | //config: | 21 | |
| 22 | //config:config XARGS | 22 | //config:config XARGS |
| 23 | //config: bool "xargs" | 23 | //config: bool "xargs" |
| 24 | //config: default y | 24 | //config: default y |
| @@ -161,13 +161,12 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 161 | #define QUOTE 1 | 161 | #define QUOTE 1 |
| 162 | #define BACKSLASH 2 | 162 | #define BACKSLASH 2 |
| 163 | #define SPACE 4 | 163 | #define SPACE 4 |
| 164 | char *s; /* start of the word */ | 164 | char q = '\0'; /* quote char */ |
| 165 | char *p; /* pointer to end of the word */ | ||
| 166 | char q = '\0'; /* quote char */ | ||
| 167 | char state = NORM; | 165 | char state = NORM; |
| 166 | char *s = buf; /* start of the word */ | ||
| 167 | char *p = s + strlen(buf); /* end of the word */ | ||
| 168 | 168 | ||
| 169 | s = buf; | 169 | buf += n_max_chars; /* past buffer's end */ |
| 170 | p = s + strlen(buf); | ||
| 171 | 170 | ||
| 172 | /* "goto ret" is used instead of "break" to make control flow | 171 | /* "goto ret" is used instead of "break" to make control flow |
| 173 | * more obvious: */ | 172 | * more obvious: */ |
| @@ -224,17 +223,14 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 224 | } | 223 | } |
| 225 | store_param(s); | 224 | store_param(s); |
| 226 | dbg_msg("args[]:'%s'", s); | 225 | dbg_msg("args[]:'%s'", s); |
| 227 | n_max_chars -= (p - s); | ||
| 228 | /* if (n_max_chars < 0) impossible */ | ||
| 229 | s = p; | 226 | s = p; |
| 230 | n_max_arg--; | 227 | n_max_arg--; |
| 231 | if (n_max_arg == 0 || n_max_chars == 0) { | 228 | if (n_max_arg == 0) { |
| 232 | goto ret; | 229 | goto ret; |
| 233 | } | 230 | } |
| 234 | state = NORM; | 231 | state = NORM; |
| 235 | } else /* state != SPACE */ | 232 | } |
| 236 | if (p - s >= n_max_chars) { | 233 | if (p == buf) { |
| 237 | dbg_msg("s:'%s' p-s:%d n_max_chars:%d", s, (int)(p-s), n_max_chars); | ||
| 238 | goto ret; | 234 | goto ret; |
| 239 | } | 235 | } |
| 240 | } | 236 | } |
| @@ -248,11 +244,10 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 248 | /* The variant does not support single quotes, double quotes or backslash */ | 244 | /* The variant does not support single quotes, double quotes or backslash */ |
| 249 | static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | 245 | static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) |
| 250 | { | 246 | { |
| 251 | char *s; /* start of the word */ | 247 | char *s = buf; /* start of the word */ |
| 252 | char *p; /* pointer to end of the word */ | 248 | char *p = s + strlen(buf); /* end of the word */ |
| 253 | 249 | ||
| 254 | s = buf; | 250 | buf += n_max_chars; /* past buffer's end */ |
| 255 | p = s + strlen(buf); | ||
| 256 | 251 | ||
| 257 | while (1) { | 252 | while (1) { |
| 258 | int c = getchar(); | 253 | int c = getchar(); |
| @@ -278,15 +273,13 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 278 | } | 273 | } |
| 279 | store_param(s); | 274 | store_param(s); |
| 280 | dbg_msg("args[]:'%s'", s); | 275 | dbg_msg("args[]:'%s'", s); |
| 281 | n_max_chars -= (p - s); | ||
| 282 | /* if (n_max_chars < 0) impossible */ | ||
| 283 | s = p; | 276 | s = p; |
| 284 | n_max_arg--; | 277 | n_max_arg--; |
| 285 | if (n_max_arg == 0 || n_max_chars == 0) { | 278 | if (n_max_arg == 0) { |
| 286 | goto ret; | 279 | goto ret; |
| 287 | } | 280 | } |
| 288 | } else /* c != EOF */ | 281 | } |
| 289 | if (p - s >= n_max_chars) { | 282 | if (p == buf) { |
| 290 | goto ret; | 283 | goto ret; |
| 291 | } | 284 | } |
| 292 | } | 285 | } |
| @@ -301,11 +294,10 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 301 | #if ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM | 294 | #if ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM |
| 302 | static char* FAST_FUNC process0_stdin(int n_max_chars, int n_max_arg, char *buf) | 295 | static char* FAST_FUNC process0_stdin(int n_max_chars, int n_max_arg, char *buf) |
| 303 | { | 296 | { |
| 304 | char *s; /* start of the word */ | 297 | char *s = buf; /* start of the word */ |
| 305 | char *p; /* pointer to end of the word */ | 298 | char *p = s + strlen(buf); /* end of the word */ |
| 306 | 299 | ||
| 307 | s = buf; | 300 | buf += n_max_chars; /* past buffer's end */ |
| 308 | p = s + strlen(buf); | ||
| 309 | 301 | ||
| 310 | while (1) { | 302 | while (1) { |
| 311 | int c = getchar(); | 303 | int c = getchar(); |
| @@ -319,15 +311,13 @@ static char* FAST_FUNC process0_stdin(int n_max_chars, int n_max_arg, char *buf) | |||
| 319 | /* A full word is loaded */ | 311 | /* A full word is loaded */ |
| 320 | store_param(s); | 312 | store_param(s); |
| 321 | dbg_msg("args[]:'%s'", s); | 313 | dbg_msg("args[]:'%s'", s); |
| 322 | n_max_chars -= (p - s); | ||
| 323 | /* if (n_max_chars < 0) impossible */ | ||
| 324 | s = p; | 314 | s = p; |
| 325 | n_max_arg--; | 315 | n_max_arg--; |
| 326 | if (n_max_arg == 0 || n_max_chars == 0) { | 316 | if (n_max_arg == 0) { |
| 327 | goto ret; | 317 | goto ret; |
| 328 | } | 318 | } |
| 329 | } else /* c != '\0' */ | 319 | } |
| 330 | if (p - s >= n_max_chars) { | 320 | if (p == buf) { |
| 331 | goto ret; | 321 | goto ret; |
| 332 | } | 322 | } |
| 333 | } | 323 | } |
