commit a0cb60891a7420ab2256f238498317569879d4d3
parent c4153df6202b944f947b018d6e461170a3a1168e
Author: Jan Klemkow <j.klemkow@wemelug.de>
Date: Tue, 14 Apr 2020 22:14:09 +0200
passthrough EOF from Terminal to child, plus exit handling
Diffstat:
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/scroll.c b/scroll.c
@@ -477,8 +477,10 @@ main(int argc, char *argv[])
if (pfd[0].revents & POLLIN) {
ssize_t n = read(STDIN_FILENO, input, sizeof(input)-1);
- if (n <= 0 && errno != EINTR)
+ if (n == -1 && errno != EINTR)
die("read:");
+ if (n == 0)
+ break;
input[n] = '\0';
@@ -538,5 +540,13 @@ main(int argc, char *argv[])
}
}
- return EXIT_SUCCESS;
+ if (close(mfd) == -1)
+ die("close:");
+
+ int status;
+ while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
+ if (pid != child)
+ continue;
+
+ return WEXITSTATUS(status);
}