Special characters:
- "-" A dash as the first char in a opt_complementary group forces
- all arguments to be treated as options, even if they have
- no leading dashes. Next char in this case can't be a digit (0-9),
- use ':' or end of line. For example:
+ "-" A group consisting of just a dash forces all arguments
+ to be treated as options, even if they have no leading dashes.
+ Next char in this case can't be a digit (0-9), use ':' or end of line.
+ Example:
- opt_complementary = "-:w-x:x-w";
- getopt32(argv, "wx");
+ opt_complementary = "-:w-x:x-w"; // "-w-x:x-w" would also work,
+ getopt32(argv, "wx"); // but is less readable
- Allows any arguments to be given without a dash (./program w x)
+ This makes it possible to use options without a dash (./program w x)
as well as with a dash (./program -x).
NB: getopt32() will leak a small amount of memory if you use
} t_complementary;
/* You can set applet_long_options for parse called long options */
-#if ENABLE_GETOPT_LONG
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
static const struct option bb_null_long_options[1] = {
{ 0, 0, 0, 0 }
};
const unsigned char *s;
t_complementary *on_off;
va_list p;
-#if ENABLE_GETOPT_LONG
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
const struct option *l_o;
struct option *long_options = (struct option *) &bb_null_long_options;
#endif
c++;
}
-#if ENABLE_GETOPT_LONG
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
if (applet_long_options) {
const char *optstr;
unsigned i, count;
next_long: ;
}
}
-#endif /* ENABLE_GETOPT_LONG */
+#endif /* ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG */
for (s = (const unsigned char *)opt_complementary; s && *s; s++) {
t_complementary *pair;
unsigned *pair_switch;
* "fake" short options, like this one:
* wget $'-\203' "Test: test" http://kernel.org/
* (supposed to act as --header, but doesn't) */
-#if ENABLE_GETOPT_LONG
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
while ((c = getopt_long(argc, argv, applet_opts,
long_options, NULL)) != -1) {
#else