diff options
-rw-r--r-- | libbb/getopt_ulflags.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libbb/getopt_ulflags.c b/libbb/getopt_ulflags.c index 5ed9c2e70..2e2ee0b6b 100644 --- a/libbb/getopt_ulflags.c +++ b/libbb/getopt_ulflags.c @@ -134,9 +134,12 @@ const char *bb_opt_complementally llist_t *my_b = NULL; int verbose_level = 0; bb_opt_complementally = "vv:b*:b-c:c-b"; - bb_getopt_ulflags(argc, argv, "vb:c", &my_b, &verbose_level); - while (my_b) { dosomething_with(my_b->data) ; my_b = my_b->link; } - if (verbose_level) bb_printf("verbose\n"); + f = bb_getopt_ulflags(argc, argv, "vb:c", &my_b, &verbose_level); + if((f & 2)) // -c after -b unset this -b flag + while (my_b) { dosomething_with(my_b->data) ; my_b = my_b->link; } + if(my_b) // but llist stored always if -b found + free_llist(my_b); + if (verbose_level) bb_printf("verbose level is %d\n", verbose_level); Special characters: @@ -174,8 +177,8 @@ Special characters: bb_opt_complementally = "-:w-x:x-w"; bb_getopt_ulflags(argc, argv, "wx"); - Allows option 'w' to be given without a dash (./program w x) - as well as with a dash (./program -x). + Allows any arguments to be given without a dash (./program w x) + as well as with a dash (./program -x). Why unset -w see above. "~" A tilde between two options, or between an option and a group of options, means that they are mutually exclusive. Unlike |