diff options
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | src/error.h | 1 | ||||
-rw-r--r-- | src/exec.c | 3 | ||||
-rw-r--r-- | src/main.c | 4 |
4 files changed, 3 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 3febddd..c51a351 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ * Catch set -e exits within built-in commands. * Size optimisations with state/s in main(). * Only reread exitstatus on EXEXIT in exitshell. + * Eliminated global exerrno. 2005-01-31 Gerrit Pape <pape@smarden.org> diff --git a/src/error.h b/src/error.h index 2db9fe6..7b04634 100644 --- a/src/error.h +++ b/src/error.h @@ -66,7 +66,6 @@ struct jmploc { extern struct jmploc *handler; extern int exception; -extern int exerrno; /* error for EXEXEC */ /* exceptions */ #define EXINT 0 /* SIGINT received */ diff --git a/src/exec.c b/src/exec.c index 1a4a9a3..f43108e 100644 --- a/src/exec.c +++ b/src/exec.c @@ -100,7 +100,6 @@ struct tblentry { STATIC struct tblentry *cmdtable[CMDTABLESIZE]; STATIC int builtinloc = -1; /* index in path of %builtin, or -1 */ -int exerrno; /* Last exec error */ STATIC void tryexec(char *, char **, char **); @@ -123,6 +122,7 @@ shellexec(char **argv, const char *path, int idx) char *cmdname; int e; char **envp; + int exerrno; clearredir(1); envp = environment(); @@ -153,6 +153,7 @@ shellexec(char **argv, const char *path, int idx) exerrno = 2; break; } + exitstatus = exerrno; TRACE(("shellexec failed for %s, errno %d, suppressint %d\n", argv[0], e, suppressint )); exerror(EXEXEC, "%s: %s", argv[0], errmsg(e, E_EXEC)); diff --git a/src/main.c b/src/main.c index 9b5a409..c686a13 100644 --- a/src/main.c +++ b/src/main.c @@ -132,10 +132,6 @@ main(int argc, char **argv) e = exception; switch (exception) { - case EXEXEC: - status = exerrno; - break; - case EXERROR: status = 2; break; |