From 2b08d0ed6747a4acf44b73068bfafc54ca1d0acf Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 28 May 2015 18:32:39 +0100 Subject: 35318: POSIX_BUILTINS behaviour for getopts. It needs to keep OPTIND, as well as the index within the string pointed to by OPTIND, global in this case. --- Src/exec.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'Src/exec.c') diff --git a/Src/exec.c b/Src/exec.c index 527d61197..9f163a627 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -4910,9 +4910,11 @@ doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval) if (!(flags & PM_UNDEFINED)) scriptname = dupstring(name); oldzoptind = zoptind; - zoptind = 1; oldoptcind = optcind; - optcind = 0; + if (!isset(POSIXBUILTINS)) { + zoptind = 1; + optcind = 0; + } /* We need to save the current options even if LOCALOPTIONS is * * not currently set. That's because if it gets set in the * @@ -5049,8 +5051,10 @@ doshfunc(Shfunc shfunc, LinkList doshargs, int noreturnval) argzero = oargv0; } pparams = pptab; - optcind = oldoptcind; - zoptind = oldzoptind; + if (!isset(POSIXBUILTINS)) { + zoptind = oldzoptind; + optcind = oldoptcind; + } scriptname = oldscriptname; oflags = ooflags; -- cgit 1.4.1