- add a few basic tests for pidof(8)
[oweals/busybox.git] / libbb / getopt_ulflags.c
index 410f4d57dc0da6b5b76f11830761fbeb04b1df52..2e2ee0b6b6242fa5ad9d01db4a6070e3a1b7775d 100644 (file)
@@ -110,21 +110,36 @@ const char *bb_opt_complementally
        bb_getopt_ulflags's return value will be as if "-a -b -c" were
        found.
 
- "ww"   Double option have int counter usaging. For example ps applet:
+ "ww"   Adjacent double options have a counter associated which indicates
+       the number of occurances of the option.
+       For example the ps applet needs:
        if w is given once, GNU ps sets the width to 132,
        if w is given more than once, it is "unlimited"
 
        int w_counter = 0;
        bb_opt_complementally = "ww";
-       flags = bb_getopt_ulflags(argc, argv, "w", &w_counter);
+       bb_getopt_ulflags(argc, argv, "w", &w_counter);
 
-       if((flags & 1))
+       if(w_counter)
                width = (w_counter == 1) ? 132 : INT_MAX;
        else
                get_terminal_width(...&width...);
 
-       w_counter - have counter -w usaging, must set int pointer
-       to bb_getopt_ulflags() after all other requires
+       w_counter is a pointer to an integer. It has to be passed to
+       bb_getopt_ulflags() after all other option argument sinks.
+       For example: accept multiple -v to indicate the level of verbosity and
+       for each -b optarg, add optarg to my_b. Finally, if b is given, turn off
+       c and vice versa:
+
+       llist_t *my_b = NULL;
+       int verbose_level = 0;
+       bb_opt_complementally = "vv:b*:b-c:c-b";
+       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:
 
@@ -155,6 +170,16 @@ Special characters:
        if(opt & 4)
                printf("Detected odd -x usaging\n");
 
+ "-"    A minus as the first char in a bb_opt_complementally group means to
+       convert the arguments as option.
+       For example:
+
+       bb_opt_complementally = "-:w-x:x-w";
+       bb_getopt_ulflags(argc, argv, "wx");
+
+       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
        the "-" case above, an error will be forced if the options
@@ -175,9 +200,6 @@ Special characters:
  "!"    If previous point set BB_GETOPT_ERROR, don`t return and call
        previous example internally
 
- "-"    A minus as one char in bb_opt_complementally group means that
-       convert the arguments as option, specail for "ps" applet.
-
  "*"    A star after a char in bb_opt_complementally means that the
        option can occur multiple times: