diff options
author | Denys Vlasenko | 2018-08-05 18:04:09 +0200 |
---|---|---|
committer | Denys Vlasenko | 2018-08-05 18:11:15 +0200 |
commit | 2596f412cd02d4b040262e5f40de2e7a7e6b32cf (patch) | |
tree | a91540715f5eafb8a5265c5a748d5edae16c3974 /shell | |
parent | 1c5eb88cd84c90e4c3d014f4abc8f8310c008842 (diff) | |
download | busybox-2596f412cd02d4b040262e5f40de2e7a7e6b32cf.zip busybox-2596f412cd02d4b040262e5f40de2e7a7e6b32cf.tar.gz |
ash: exec: Return 126 on most errors in shellexec
Upstream commit:
Date: Sat, 19 May 2018 02:39:37 +0800
exec: Return 126 on most errors in shellexec
Currently when shellexec fails on most errors the shell will exit
with exit status 2. This patch changes it to 126 in order to avoid
ambiguities with the exit status from a successful exec.
The errors that result in 127 has also been expanded to include
ENOTDIR, ENAMETOOLONG and ELOOP.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
function old new delta
shellexec 245 254 +9
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/shell/ash.c b/shell/ash.c index 79ade5d..ad50537 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8098,15 +8098,15 @@ static void shellexec(char *prog, char **argv, const char *path, int idx) /* Map to POSIX errors */ switch (e) { - case EACCES: + default: exerrno = 126; break; + case ELOOP: + case ENAMETOOLONG: case ENOENT: + case ENOTDIR: exerrno = 127; break; - default: - exerrno = 2; - break; } exitstatus = exerrno; TRACE(("shellexec failed for %s, errno %d, suppress_int %d\n", |