last_patch89 from vodz:

Manuel,

    I rewrite bb_getopt_ulflags() function for more universal usage.
    My version support now:
    - options with arguments (optional arg as GNU extension also)
    - complementaly and/or incomplementaly and/or incongruously and/or list
    options
    - long_opt (all applets may have long option, add supporting is trivial)
    This realisation full compatibile from your version.
    Code size grow 480 bytes, but only coreutils/* over compensate this size
    after using new function. Last patch reduced over 800 bytes and not full
    applied to all. "mkdir" and "mv" applets have long_opt now for demonstrate
    trivial addition support long_opt with usage new bb_getopt_ulflags().
    Complementaly and/or incomplementaly and/or incongruously and/or list options
    logic is not trivial, but new "cut" and "grep" applets using this logic
    for examples with full demostrating. New "grep" applet reduced over 300
    bytes.

    Mark,
    Also. I removed bug from "grep" applet.
    $ echo a b | busybox grep -e a b
    a b
    a b
    But right is printing one only.

    --w
    vodz
This commit is contained in:
Eric Andersen
2003-06-20 09:01:58 +00:00
parent dfce3536ac
commit 8876fb2f59
19 changed files with 592 additions and 533 deletions

View File

@ -66,24 +66,13 @@ int xargs_main(int argc, char **argv)
char *file_to_act_on;
char **args;
int i, a;
char flg_vi = 0; /* verbose |& interactive */
char flg_no_empty = 0;
char flg_vi; /* verbose |& interactive */
char flg_no_empty;
while ((a = getopt(argc, argv, "prt")) > 0) {
switch(a) {
case 'p':
flg_vi |= 3;
break;
case 't':
flg_vi |= 1;
break;
case 'r':
flg_no_empty = 1;
break;
default:
bb_show_usage();
}
}
bb_opt_complementaly = "pt";
a = bb_getopt_ulflags(argc, argv, "tpr");
flg_vi = a & 3;
flg_no_empty = a & 4;
a = argc - optind;
argv += optind;
@ -110,7 +99,7 @@ int xargs_main(int argc, char **argv)
fputc(' ', stderr);
fputs(args[i], stderr);
}
fprintf(stderr, "%s", ((flg_vi & 2) ? " ?..." : "\n"));
fputs(((flg_vi & 2) ? " ?..." : "\n"), stderr);
}
if((flg_vi & 2) == 0 || bb_ask_confirmation() != 0 ) {
xargs_exec(args);