diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/getopt_ulflags.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libbb/getopt_ulflags.c b/libbb/getopt_ulflags.c index 9bf8c0559..04d1e669f 100644 --- a/libbb/getopt_ulflags.c +++ b/libbb/getopt_ulflags.c @@ -90,7 +90,12 @@ bb_getopt_ulflags (int argc, char **argv, const char *applet_opts, ...) va_start (p, applet_opts); - for (s = applet_opts; *s; s++) { + /* skip GNU extension */ + s = applet_opts; + if(*s == '+' || *s == '-') + s++; + + for (; *s; s++) { c++; while (s[1] == ':') { /* check GNU extension "o::" - optional arg */ @@ -99,7 +104,12 @@ bb_getopt_ulflags (int argc, char **argv, const char *applet_opts, ...) } complementaly = xcalloc (c + 1, sizeof (t_complementaly)); c = 0; - for (s = applet_opts; *s; s++) { + /* skip GNU extension */ + s = applet_opts; + if(*s == '+' || *s == '-') + s++; + + for (; *s; s++) { complementaly->opt = *s; complementaly->switch_on |= (1 << c); c++; |