diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/eval.c | 18 | ||||
-rw-r--r-- | src/trap.c | 9 |
3 files changed, 16 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog index 9f87e4e..02b966c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2006-01-12 Herbert Xu <herbert@gondor.apana.org.au> + + * Fixed eval exit status with empty arguments. + 2005-11-26 Herbert Xu <herbert@gondor.apana.org.au> * Release 0.5.3. diff --git a/src/eval.c b/src/eval.c index f8f6f0a..07e7ee2 100644 --- a/src/eval.c +++ b/src/eval.c @@ -150,10 +150,9 @@ evalcmd(int argc, char **argv) STPUTC('\0', concat); p = grabstackstr(concat); } - evalstring(p, ~SKIPEVAL); - + return evalstring(p, ~SKIPEVAL); } - return exitstatus; + return 0; } @@ -166,24 +165,23 @@ evalstring(char *s, int mask) { union node *n; struct stackmark smark; - int skip; + int status; setinputstring(s); setstackmark(&smark); - skip = 0; + status = 0; while ((n = parsecmd(0)) != NEOF) { evaltree(n, 0); + status = exitstatus; popstackmark(&smark); - skip = evalskip; - if (skip) + if (evalskip) break; } popfile(); - skip &= mask; - evalskip = skip; - return skip; + evalskip &= mask; + return status; } diff --git a/src/trap.c b/src/trap.c index bbff81a..eae6186 100644 --- a/src/trap.c +++ b/src/trap.c @@ -295,7 +295,6 @@ dotrap(void) char *q; int i; int savestatus; - int skip = 0; savestatus = exitstatus; pendingsigs = 0; @@ -309,13 +308,13 @@ dotrap(void) p = trap[i + 1]; if (!p) continue; - skip = evalstring(p, SKIPEVAL); + evalstring(p, SKIPEVAL); exitstatus = savestatus; - if (skip) - break; + if (evalskip) + return evalskip; } - return skip; + return 0; } |