ash: [BUILTIN] Treat OPTIND=0 in the same way as OPTIND=1
Upstream commit: Date: Sat, 6 Oct 2007 18:59:31 +0800 [BUILTIN] Treat OPTIND=0 in the same way as OPTIND=1 Previously setting OPTIND to 0 would cause subsequent getopts calls to fail. This patch makes dash reset the getopts parameters the same way as OPTIND=1. Both behaviours are allowed by POSIX but other common shells do tolerate this case. function old new delta getoptsreset 24 30 +6 getoptscmd 632 614 -18 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
88e15703ac
commit
a513bf3c3c
@ -2019,7 +2019,7 @@ extern struct globals_var *const ash_ptr_to_globals_var;
|
||||
static void FAST_FUNC
|
||||
getoptsreset(const char *value)
|
||||
{
|
||||
shellparam.optind = number(value);
|
||||
shellparam.optind = number(value) ?: 1;
|
||||
shellparam.optoff = -1;
|
||||
}
|
||||
#endif
|
||||
@ -10571,8 +10571,6 @@ getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *opt
|
||||
|
||||
sbuf[1] = '\0';
|
||||
|
||||
if (*param_optind < 1)
|
||||
return 1;
|
||||
optnext = optfirst + *param_optind - 1;
|
||||
|
||||
if (*param_optind <= 1 || *optoff < 0 || (int)strlen(optnext[-1]) < *optoff)
|
||||
|
Loading…
Reference in New Issue
Block a user