aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/script/script.c
diff options
context:
space:
mode:
authorEd Schouten <ed@FreeBSD.org>2010-04-30 22:33:49 +0000
committerEd Schouten <ed@FreeBSD.org>2010-04-30 22:33:49 +0000
commite1e9ba3370d01ab5448943461a07d6d183a15bf1 (patch)
tree09ce6a985c822526d2607a488f75f6372d41dfd3 /usr.bin/script/script.c
parent7bec141b121da05bad35c061c1e9ab17f47c71d7 (diff)
Notes
Diffstat (limited to 'usr.bin/script/script.c')
-rw-r--r--usr.bin/script/script.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/usr.bin/script/script.c b/usr.bin/script/script.c
index 6c4e0ee4db37..a21785abbc4f 100644
--- a/usr.bin/script/script.c
+++ b/usr.bin/script/script.c
@@ -219,23 +219,17 @@ usage(void)
void
finish(void)
{
- pid_t pid;
- int die, e, status;
+ int e, status;
- die = e = 0;
- while ((pid = wait3(&status, WNOHANG, 0)) > 0)
- if (pid == child) {
- die = 1;
- if (WIFEXITED(status))
- e = WEXITSTATUS(status);
- else if (WIFSIGNALED(status))
- e = WTERMSIG(status);
- else /* can't happen */
- e = 1;
- }
-
- if (die)
+ if (waitpid(child, &status, 0) == child) {
+ if (WIFEXITED(status))
+ e = WEXITSTATUS(status);
+ else if (WIFSIGNALED(status))
+ e = WTERMSIG(status);
+ else /* can't happen */
+ e = 1;
done(e);
+ }
}
void