diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-10-01 15:40:01 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-10-01 15:40:01 -0400 |
commit | 9366c5660b8626baa4b25a093d19babd294cad60 (patch) | |
tree | d26bc6f2b8ee0bfb08f9aa1f426114c90033f3a6 | |
parent | d5fa0c23542746c642a00d24956f20afa639392c (diff) | |
download | stasis-9366c5660b8626baa4b25a093d19babd294cad60.tar.gz |
shell: exit program when stream redirection fails
-rw-r--r-- | src/system.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/system.c b/src/system.c index a564769..4e605ec 100644 --- a/src/system.c +++ b/src/system.c @@ -46,11 +46,19 @@ int shell(struct Process *proc, char *args) { if (strlen(proc->f_stdout)) { fp_out = freopen(proc->f_stdout, "w+", stdout); + if (!fp_out) { + fprintf(stderr, "Unable to redirect stdout to %s: %s\n", proc->f_stdout, strerror(errno)); + exit(1); + } } if (strlen(proc->f_stderr)) { if (!proc->redirect_stderr) { fp_err = freopen(proc->f_stderr, "w+", stderr); + if (!fp_err) { + fprintf(stderr, "Unable to redirect stderr to %s: %s\n", proc->f_stdout, strerror(errno)); + exit(1); + } } } @@ -59,7 +67,10 @@ int shell(struct Process *proc, char *args) { fclose(fp_err); fclose(stderr); } - dup2(fileno(stdout), fileno(stderr)); + if (dup2(fileno(stdout), fileno(stderr)) < 0) { + fprintf(stderr, "Unable to redirect stderr to stdout: %s\n", strerror(errno)); + exit(1); + } } return execl("/bin/bash", "bash", "--norc", t_name, (char *) NULL); |