diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/error.c | 2 | ||||
-rw-r--r-- | src/eval.c | 6 | ||||
-rw-r--r-- | src/main.c | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/src/error.c b/src/error.c index e304d3d..f1a358d 100644 --- a/src/error.c +++ b/src/error.c @@ -163,6 +163,8 @@ sh_error(const char *msg, ...) { va_list ap; + exitstatus = 2; + va_start(ap, msg); exverror(EXERROR, msg, ap); /* NOTREACHED */ diff --git a/src/eval.c b/src/eval.c index ea4afc6..013a8dd 100644 --- a/src/eval.c +++ b/src/eval.c @@ -823,11 +823,13 @@ evalcommand(union node *cmd, int flags) } if (status) { +bail: + exitstatus = status; + /* We have a redirection error. */ if (spclbltin > 0) exraise(EXERROR); -bail: - exitstatus = status; + goto out; } diff --git a/src/main.c b/src/main.c index 2bff956..1735c67 100644 --- a/src/main.c +++ b/src/main.c @@ -113,8 +113,6 @@ main(int argc, char **argv) reset(); e = exception; - if (e == EXERROR) - exitstatus = 2; s = state; if (e == EXEXIT || s == 0 || iflag == 0 || shlvl) |