This is a base-line attempt at separating errors from the child from the ones from script itself ‒ 125 is the general-purpose code in POSIX utilities that exec() (with 126 being ENOEXEC and 127 ‒ ENOENT) --- Please keep me in CC, as I'm not subscribed.
usr.bin/script/script.1 | 6 ++---- usr.bin/script/script.c | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/usr.bin/script/script.1 b/usr.bin/script/script.1 index aa8bb2790..2ce483b97 100644 --- a/usr.bin/script/script.1 +++ b/usr.bin/script/script.1 @@ -80,10 +80,8 @@ or control-D .Pq Ql ^D will exit most interactive shells). .Nm -will exit with the status of 0 unless any of its child -processes fail, in which case, -.Nm -will return 1. +will exit with the status of the shell, +or 125 if it couldn't execute it. .Pp Certain interactive commands, such as .Xr vi 1 , diff --git a/usr.bin/script/script.c b/usr.bin/script/script.c index fd2829033..1c2db608d 100644 --- a/usr.bin/script/script.c +++ b/usr.bin/script/script.c @@ -119,7 +119,7 @@ main(int argc, char *argv[]) default: fprintf(stderr, "usage: %s [-a] [-c command] [file]\n", __progname); - exit(1); + exit(125); } argc -= optind; argv += optind; @@ -206,7 +206,7 @@ void finish(int signo) { int save_errno = errno; - int status, e = 1; + int status, e = 125; pid_t pid; while ((pid = wait3(&status, WNOHANG, 0)) > 0) { @@ -335,7 +335,7 @@ fail(void) { (void)kill(0, SIGTERM); - done(1); + done(125); } void -- 2.30.2
signature.asc
Description: PGP signature