libbb: move nuke_str() from passwd into libbb
[oweals/busybox.git] / libbb / getopt32.c
index 18f33c7041d6fd4129ea18b88e318f99143cc070..d0e83d88ee4d31090527a7f2f632907e9ebe0312 100644 (file)
@@ -7,7 +7,9 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-#include <getopt.h>
+#if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
+# include <getopt.h>
+#endif
 #include "libbb.h"
 
 /*      Documentation
@@ -465,13 +467,17 @@ getopt32(char **argv, const char *applet_opts, ...)
                }
                for (on_off = complementary; on_off->opt_char; on_off++)
                        if (on_off->opt_char == *s)
-                               break;
+                               goto found_opt;
+               /* Without this, diagnostic of such bugs is not easy */
+               bb_error_msg_and_die("NO OPT %c!", *s);
+ found_opt:
                if (c == ':' && s[2] == ':') {
                        on_off->param_type = PARAM_LIST;
                        continue;
                }
                if (c == '+' && (s[2] == ':' || s[2] == '\0')) {
                        on_off->param_type = PARAM_INT;
+                       s++;
                        continue;
                }
                if (c == ':' || c == '\0') {