diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/misc/getopt.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/src/misc/getopt.c b/src/misc/getopt.c index e921a60e..cd1f292f 100644 --- a/src/misc/getopt.c +++ b/src/misc/getopt.c @@ -84,8 +84,12 @@ int getopt(int argc, char * const argv[], const char *optstring)  		return '?';  	}  	if (optstring[i] == ':') { -		if (optstring[i+1] == ':') optarg = 0; -		else if (optind >= argc) { +		optarg = 0; +		if (optstring[i+1] != ':' || optpos) { +			optarg = argv[optind++] + optpos; +			optpos = 0; +		} +		if (optind > argc) {  			optopt = c;  			if (optstring[0] == ':') return ':';  			if (opterr) __getopt_msg(argv[0], @@ -93,10 +97,6 @@ int getopt(int argc, char * const argv[], const char *optstring)  				optchar, k);  			return '?';  		} -		if (optstring[i+1] != ':' || optpos) { -			optarg = argv[optind++] + optpos; -			optpos = 0; -		}  	}  	return c;  } | 
