diff options
| author | Eric Andersen <andersen@codepoet.org> | 2000-09-24 01:12:54 +0000 |
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2000-09-24 01:12:54 +0000 |
| commit | 9ae38386575513dfed2a7eba4eb53869d17dca2d (patch) | |
| tree | 95988f4de92ec22b417d3c371e231369a8cdd4ce /findutils | |
| parent | 1b1cfde1f8d66eafb1faa1b3272f9dac4c3b5b5b (diff) | |
| download | busybox-w32-9ae38386575513dfed2a7eba4eb53869d17dca2d.tar.gz busybox-w32-9ae38386575513dfed2a7eba4eb53869d17dca2d.tar.bz2 busybox-w32-9ae38386575513dfed2a7eba4eb53869d17dca2d.zip | |
Fix xargs option parsing
Diffstat (limited to 'findutils')
| -rw-r--r-- | findutils/xargs.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/findutils/xargs.c b/findutils/xargs.c index bf68cf768..a6f8058fc 100644 --- a/findutils/xargs.c +++ b/findutils/xargs.c | |||
| @@ -37,34 +37,39 @@ int xargs_main(int argc, char **argv) | |||
| 37 | char traceflag = 0; | 37 | char traceflag = 0; |
| 38 | int len_args_from_cmdline, len_cmd_to_be_executed, len, opt; | 38 | int len_args_from_cmdline, len_cmd_to_be_executed, len, opt; |
| 39 | 39 | ||
| 40 | while ((opt = getopt(argc, argv, "t")) != EOF) { | 40 | /* Note that we do not use getopt here, since |
| 41 | switch (opt) { | 41 | * we only want to interpret initial options, |
| 42 | case 't': | 42 | * not options passed to commands */ |
| 43 | traceflag=1; | 43 | while (--argc && **(++argv) == '-') { |
| 44 | break; | 44 | while (*++(*argv)) { |
| 45 | default: | 45 | switch (**argv) { |
| 46 | fatalError(xargs_usage); | 46 | case 't': |
| 47 | traceflag=1; | ||
| 48 | break; | ||
| 49 | default: | ||
| 50 | fatalError(xargs_usage); | ||
| 51 | } | ||
| 47 | } | 52 | } |
| 48 | } | 53 | } |
| 49 | 54 | ||
| 50 | /* Store the command and arguments to be executed (from the command line) */ | 55 | /* Store the command and arguments to be executed (from the command line) */ |
| 51 | if (optind == argc) { | 56 | if (argc == 1) { |
| 52 | len_args_from_cmdline = 6; | 57 | len_args_from_cmdline = 6; |
| 53 | args_from_cmdline = xmalloc(len_args_from_cmdline); | 58 | args_from_cmdline = xmalloc(len_args_from_cmdline); |
| 54 | strcat(args_from_cmdline, "echo "); | 59 | strcat(args_from_cmdline, "echo "); |
| 55 | } else { | 60 | } else { |
| 56 | opt=strlen(argv[optind]); | 61 | opt=strlen(*argv); |
| 57 | len_args_from_cmdline = (opt > 10)? opt : 10; | 62 | len_args_from_cmdline = (opt > 10)? opt : 10; |
| 58 | args_from_cmdline = xcalloc(len_args_from_cmdline, sizeof(char)); | 63 | args_from_cmdline = xcalloc(len_args_from_cmdline, sizeof(char)); |
| 59 | for (; optind < argc; optind++) { | 64 | while (argc-- > 0) { |
| 60 | if (strlen(argv[optind]) + strlen(args_from_cmdline) > | 65 | if (strlen(*argv) + strlen(args_from_cmdline) > |
| 61 | len_args_from_cmdline) { | 66 | len_args_from_cmdline) { |
| 62 | len_args_from_cmdline += strlen(argv[optind]); | 67 | len_args_from_cmdline += strlen(*argv); |
| 63 | args_from_cmdline = | 68 | args_from_cmdline = |
| 64 | xrealloc(args_from_cmdline, | 69 | xrealloc(args_from_cmdline, |
| 65 | len_args_from_cmdline+1); | 70 | len_args_from_cmdline+1); |
| 66 | } | 71 | } |
| 67 | strcat(args_from_cmdline, argv[optind]); | 72 | strcat(args_from_cmdline, *argv); |
| 68 | strcat(args_from_cmdline, " "); | 73 | strcat(args_from_cmdline, " "); |
| 69 | } | 74 | } |
| 70 | } | 75 | } |
