X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fmisc%2Fgetopt.c;h=35880a090719e8f3913bbcd63c0238214490826a;hp=abf0e8477f5f71a7e58bd84b6ce92228f36a770d;hb=030e52639248ac8417a4934298caa78c21a228d1;hpb=e44849f5cf331e655705b18d6c81c616e29d50d0;ds=sidebyside diff --git a/src/misc/getopt.c b/src/misc/getopt.c index abf0e847..35880a09 100644 --- a/src/misc/getopt.c +++ b/src/misc/getopt.c @@ -3,10 +3,13 @@ #include #include #include +#include "libc.h" char *optarg; -int optind=1, opterr=1, optopt; -static int optpos; +int optind=1, opterr=1, optopt, __optpos, __optreset=0; + +#define optpos __optpos +weak_alias(__optreset, optreset); int getopt(int argc, char * const argv[], const char *optstring) { @@ -15,6 +18,12 @@ int getopt(int argc, char * const argv[], const char *optstring) int k, l; char *optchar; + if (!optind || __optreset) { + __optreset = 0; + __optpos = 0; + optind = 1; + } + if (optind >= argc || !argv[optind] || argv[optind][0] != '-' || !argv[optind][1]) return -1; if (argv[optind][1] == '-' && !argv[optind][2])