diff -urN musl.orig/include/getopt.h musl/include/getopt.h --- musl.orig/include/getopt.h Sun Sep 30 20:08:45 2012 +++ musl/include/getopt.h Sun Sep 30 20:09:09 2012 @@ -7,7 +7,7 @@ int getopt(int, char * const [], const char *); extern char *optarg; -extern int optind, opterr, optopt; +extern int optind, opterr, optopt, optreset; struct option { diff -urN musl.orig/src/misc/getopt.c musl/src/misc/getopt.c --- musl.orig/src/misc/getopt.c Sun Sep 30 20:08:45 2012 +++ musl/src/misc/getopt.c Sun Sep 30 20:13:14 2012 @@ -5,7 +5,7 @@ #include char *optarg; -int optind=1, opterr=1, optopt; +int optind=1, opterr=1, optopt, optreset=0; static int optpos; int getopt(int argc, char * const argv[], const char *optstring) @@ -15,6 +15,10 @@ int k, l; char *optchar; + if (optreset) { + optreset = 0; + optind = 1; + } if (optind >= argc || !argv[optind] || argv[optind][0] != '-' || !argv[optind][1]) return -1; if (argv[optind][1] == '-' && !argv[optind][2])