diff options
| author | Ned T. Crigler <crigler@gmail.com> | 2025-06-17 11:46:25 -0700 |
|---|---|---|
| committer | Ned T. Crigler <crigler@gmail.com> | 2025-06-17 11:46:25 -0700 |
| commit | 5e3865328e4609f74bd10cb4575e429b8d1b3aa4 (patch) | |
| tree | 7c70c9ed351ad771247ba84e64bed355fc3fb963 | |
| parent | 1e462729c1bc7325bb1126a674d1fb7b91cf836a (diff) | |
Make dtach -N return the exit status of the program
Also change the execvp error exit from 127 to 1 to be consistent between
dtach -n and dtach -N.
| -rw-r--r-- | dtach.h | 1 | ||||
| -rw-r--r-- | master.c | 11 |
2 files changed, 11 insertions, 1 deletions
@@ -83,6 +83,7 @@ #include <sys/stat.h> #include <sys/socket.h> #include <sys/un.h> +#include <sys/wait.h> #ifndef S_ISREG #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) @@ -134,7 +134,7 @@ init_pty(char **argv, int statusfd) printf("%s: could not execute %s: %s\r\n", progname, *argv, strerror(errno)); fflush(stdout); - _exit(127); + _exit(1); } /* Parent.. Finish up and return */ #ifdef BROKEN_MASTER @@ -261,7 +261,16 @@ pty_activity(int s) /* Error -> die */ if (len <= 0) + { + int status; + + if (wait(&status) >= 0) + { + if (WIFEXITED(status)) + exit(WEXITSTATUS(status)); + } exit(1); + } #ifdef BROKEN_MASTER /* Get the current terminal settings. */ |
