hush: GETOPT_RESET() _after_ getopts too.
No binary (build failed)
—
(log yok)
| @@ -1212,7 +1212,7 @@ uint32_t getopt32long(char **argv, const char *optstring, const char *longopts, | |
| * By ~2008, OpenBSD 3.4 was changed to survive glibc-like optind = 0 | |
| * (to interpret it as if optreset was set). | |
| */ | |
| - | #ifdef __GLIBC__ |
| + | #if 1 /*def __GLIBC__*/ |
| #define GETOPT_RESET() (optind = 0) | |
| #else /* BSD style */ | |
| #define GETOPT_RESET() (optind = 1) | |
| @@ -517,7 +517,7 @@ vgetopt32(char **argv, const char *applet_opts, const char *applet_long_options, | |
| } | |
| /* In case getopt32 was already called: | |
| - | * reset the libc getopt() function, which keeps internal state. |
| + | * reset libc getopt() internal state. |
| * run_nofork_applet() does this, but we might end up here | |
| * also via gunzip_main() -> gzip_main(). Play safe. | |
| */ | |
| @@ -9956,7 +9956,7 @@ Test that VAR is a valid variable name? | |
| * until we get Nth result (or failure). | |
| * (N == G.getopt_count is reset to 0 whenever OPTIND is [un]set). | |
| */ | |
| - | optind = 0; /* reset getopt() state */ |
| + | GETOPT_RESET(); |
| count = 0; | |
| n = string_array_len(argv); | |
| do { | |
| @@ -9971,6 +9971,7 @@ Test that VAR is a valid variable name? | |
| /* Set OPTIND. Prevent resetting of the magic counter! */ | |
| set_local_var_from_halves("OPTIND", utoa(optind)); | |
| G.getopt_count = count; /* "next time, give me N+1'th result" */ | |
| + | GETOPT_RESET(); /* just in case */ |
| /* Set OPTARG */ | |
| /* Always set or unset, never left as-is, even on exit/error: | |
| @@ -425,8 +425,8 @@ shell_builtin_ulimit(char **argv) | |
| * ulimit 123 -c2 -l 456 | |
| */ | |
| - | /* In case getopt was already called: |
| - | * reset the libc getopt() function, which keeps internal state. |
| + | /* In case getopt() was already called: |
| + | * reset libc getopt() internal state. |
| */ | |
| GETOPT_RESET(); | |