summaryrefslogtreecommitdiff
path: root/libbb/getopt32.c
diff options
context:
space:
mode:
authorDenis Vlasenko2008-11-29 06:49:36 +0000
committerDenis Vlasenko2008-11-29 06:49:36 +0000
commitab310e1b1c2f85235e61c471802b53314da919f0 (patch)
tree415cf40159a0c2b6009a27df18b0cc45bea2e956 /libbb/getopt32.c
parent1cd1012a9063656a6b5b75dac8d400abd60cd643 (diff)
downloadbusybox-ab310e1b1c2f85235e61c471802b53314da919f0.zip
busybox-ab310e1b1c2f85235e61c471802b53314da919f0.tar.gz
apply post-1.13.0 patches
Diffstat (limited to 'libbb/getopt32.c')
-rw-r--r--libbb/getopt32.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libbb/getopt32.c b/libbb/getopt32.c
index 49fb533..17babcd 100644
--- a/libbb/getopt32.c
+++ b/libbb/getopt32.c
@@ -515,6 +515,19 @@ getopt32(char **argv, const char *applet_opts, ...)
}
}
+ /* In case getopt32 was already called:
+ * reset the libc getopt() function, which keeps internal state.
+ * run_nofork_applet_prime() does this, but we might end up here
+ * also via gunzip_main() -> gzip_main(). Play safe.
+ */
+#ifdef __GLIBC__
+ optind = 0;
+#else /* BSD style */
+ optind = 1;
+ /* optreset = 1; */
+#endif
+ /* optarg = NULL; opterr = 0; optopt = 0; - do we need this?? */
+
pargv = NULL;
/* Note: just "getopt() <= 0" will not work well for