summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.13.0-getopt.patch
blob: 489c75b750fbf7c6d71fa45a2e23a312fffec7f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--- busybox-1.13.0/libbb/getopt32.c	Thu Oct 30 08:41:34 2008
+++ busybox-1.13.0-getopt/libbb/getopt32.c	Wed Nov 12 23:04:01 2008
@@ -515,6 +515,19 @@
 		}
 	}
 
+	/* 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