diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2013-08-23 21:27:42 +1000 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2013-08-23 21:27:42 +1000 |
commit | a14c418aee9d4ccd7cf888024e318b300173099f (patch) | |
tree | 6d767ed945497fc9653b86a68461620d8d5308ae | |
parent | [VAR] Add newline when tracing in poplocalvars (diff) | |
download | dash-a14c418aee9d4ccd7cf888024e318b300173099f.tar.gz dash-a14c418aee9d4ccd7cf888024e318b300173099f.zip |
[VAR] Initialise OPTIND after importing environment
On Sat, Mar 23, 2013 at 01:46:20AM +0000, Chris F.A. Johnson wrote: > > According to both the dash man page and the POSIX spec, "When the > shell is invoked, OPTIND is initialized to 1." > > However, it actually takes the value of the environment variable > if it exists: > > $ OPTIND=4 dash -c 'echo "$OPTIND"' > 4 > $ OPTIND=4 bash -c 'echo "$OPTIND"' > 1 > $ OPTIND=4 ksh -c 'echo "$OPTIND"' > 1 > $ OPTIND=4 ksh93 -c 'echo "$OPTIND"' > 1 This patch fixes this by initialising OPTIND after importing the environment. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | src/var.c | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 9500c87..4276676 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2013-08-23 Herbert Xu <herbert@gondor.apana.org.au> * Propagate EXP_QPAT in subevalvar. + * Initialise OPTIND after importing environment. 2013-03-12 Peter Rosin <peda@lysator.liu.se> diff --git a/src/var.c b/src/var.c index c35e925..fa24854 100644 --- a/src/var.c +++ b/src/var.c @@ -142,6 +142,8 @@ INIT { } } + setvarint("OPTIND", 1, 0); + fmtstr(ppid + 5, sizeof(ppid) - 5, "%ld", (long) getppid()); setvareq(ppid, VTEXTFIXED); |