summary refs log tree commit diff
path: root/src/exec.c
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-11-28 20:44:37 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2010-11-28 20:44:37 +0800
commit8949a86cfe5d1daf2f46b5cd6b3bb73f78db2f31 (patch)
tree2f0725e393c4cefc62866dfe3c15f0497ca4c667 /src/exec.c
parent[INPUT] Use exit status 127 when the script to run does not exist (diff)
downloaddash-8949a86cfe5d1daf2f46b5cd6b3bb73f78db2f31.tar.gz
dash-8949a86cfe5d1daf2f46b5cd6b3bb73f78db2f31.zip
[BUILTIN] Use EXEXIT in place of EXEXEC
The intended semantics of EXEXEC are identical to EXEXIT, so
simplify by using EXEXIT directly.

Functional change: in edge cases (exec within a trap handler),
this causes the exit status from exec not to be clobbered.
For example, without this patch:

 $ sh -c 'trap "exec nonexistent" EXIT'; echo $?
 exec: 1: nonexistent: not found
 0

And with it:

 $ sh -c 'trap "exec nonexistent" EXIT'; echo $?
 exec: 1: nonexistent: not found
 127

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--src/exec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/exec.c b/src/exec.c
index 42299ea..b273420 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -141,7 +141,7 @@ shellexec(char **argv, const char *path, int idx)
 	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));
+	exerror(EXEXIT, "%s: %s", argv[0], errmsg(e, E_EXEC));
 	/* NOTREACHED */
 }