libbb/getopt32.c: clear applet_long_options and opt_complementary after use

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-03-16 17:57:53 +01:00
parent 09b767250d
commit d46c36c74e

View File

@ -423,6 +423,10 @@ getopt32(char **argv, const char *applet_opts, ...)
c++;
next_long: ;
}
/* Make it unnecessary to clear applet_long_options
* by hand after each call to getopt32
*/
applet_long_options = NULL;
}
#endif /* ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG */
for (s = (const unsigned char *)opt_complementary; s && *s; s++) {
@ -485,15 +489,15 @@ getopt32(char **argv, const char *applet_opts, ...)
s++;
}
pair = on_off;
pair_switch = &(pair->switch_on);
pair_switch = &pair->switch_on;
for (s++; *s && *s != ':'; s++) {
if (*s == '?') {
pair_switch = &(pair->requires);
pair_switch = &pair->requires;
} else if (*s == '-') {
if (pair_switch == &(pair->switch_off))
pair_switch = &(pair->incongruously);
if (pair_switch == &pair->switch_off)
pair_switch = &pair->incongruously;
else
pair_switch = &(pair->switch_off);
pair_switch = &pair->switch_off;
} else {
for (on_off = complementary; on_off->opt_char; on_off++)
if (on_off->opt_char == *s) {
@ -504,6 +508,7 @@ getopt32(char **argv, const char *applet_opts, ...)
}
s--;
}
opt_complementary = NULL;
va_end(p);
if (spec_flgs & (FIRST_ARGV_IS_OPT | ALL_ARGV_IS_OPTS)) {