diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-08-03 19:12:25 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-08-03 19:12:25 +0000 |
commit | cc08ad26fe371e0b0bdbc58343c1f33a8840d2a0 (patch) | |
tree | 104e98b094551d4705b5a690a5d8d8c960cb44e3 | |
parent | 1e28f6171fe9cb56422473d506aa28fdb1eb46d8 (diff) | |
download | busybox-w32-cc08ad26fe371e0b0bdbc58343c1f33a8840d2a0.tar.gz busybox-w32-cc08ad26fe371e0b0bdbc58343c1f33a8840d2a0.tar.bz2 busybox-w32-cc08ad26fe371e0b0bdbc58343c1f33a8840d2a0.zip |
xargs: fix xargs -e; added test for that
-rw-r--r-- | findutils/xargs.c | 8 | ||||
-rwxr-xr-x | testsuite/xargs.tests | 19 |
2 files changed, 26 insertions, 1 deletions
diff --git a/findutils/xargs.c b/findutils/xargs.c index 8f0a3d4ad..92d01f7b6 100644 --- a/findutils/xargs.c +++ b/findutils/xargs.c | |||
@@ -376,6 +376,8 @@ enum { | |||
376 | int xargs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 376 | int xargs_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
377 | int xargs_main(int argc, char **argv) | 377 | int xargs_main(int argc, char **argv) |
378 | { | 378 | { |
379 | static const char const_eof_str[] ALIGN1 = "_"; | ||
380 | |||
379 | char **args; | 381 | char **args; |
380 | int i, n; | 382 | int i, n; |
381 | xlist_t *list = NULL; | 383 | xlist_t *list = NULL; |
@@ -385,7 +387,7 @@ int xargs_main(int argc, char **argv) | |||
385 | int n_max_arg; | 387 | int n_max_arg; |
386 | size_t n_chars = 0; | 388 | size_t n_chars = 0; |
387 | long orig_arg_max; | 389 | long orig_arg_max; |
388 | const char *eof_str = "_"; | 390 | const char *eof_str = const_eof_str; |
389 | unsigned opt; | 391 | unsigned opt; |
390 | size_t n_max_chars; | 392 | size_t n_max_chars; |
391 | #if ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM | 393 | #if ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM |
@@ -396,6 +398,10 @@ int xargs_main(int argc, char **argv) | |||
396 | 398 | ||
397 | opt = getopt32(argv, OPTION_STR, &max_args, &max_chars, &eof_str); | 399 | opt = getopt32(argv, OPTION_STR, &max_args, &max_chars, &eof_str); |
398 | 400 | ||
401 | /* -e without optional param? */ | ||
402 | if ((opt & OPT_EOF_STRING) && eof_str == const_eof_str) | ||
403 | eof_str = NULL; | ||
404 | |||
399 | if (opt & OPT_ZEROTERM) | 405 | if (opt & OPT_ZEROTERM) |
400 | USE_FEATURE_XARGS_SUPPORT_ZERO_TERM(read_args = process0_stdin); | 406 | USE_FEATURE_XARGS_SUPPORT_ZERO_TERM(read_args = process0_stdin); |
401 | 407 | ||
diff --git a/testsuite/xargs.tests b/testsuite/xargs.tests new file mode 100755 index 000000000..e041d592e --- /dev/null +++ b/testsuite/xargs.tests | |||
@@ -0,0 +1,19 @@ | |||
1 | #!/bin/sh | ||
2 | # Copyright 2008 by Denys Vlasenko | ||
3 | # Licensed under GPL v2, see file LICENSE for details. | ||
4 | |||
5 | . testing.sh | ||
6 | |||
7 | # testing "test name" "command" "expected result" "file input" "stdin" | ||
8 | |||
9 | testing "xargs stops on underscore" \ | ||
10 | "xargs" \ | ||
11 | "a\n" \ | ||
12 | "" "a\n_\nb\n" | ||
13 | |||
14 | testing "xargs -e without param" \ | ||
15 | "xargs -e" \ | ||
16 | "a _ b\n" \ | ||
17 | "" "a\n_\nb\n" | ||
18 | |||
19 | exit $FAILCOUNT | ||