diff options
Diffstat (limited to 'usr.bin/script/script.c')
-rw-r--r-- | usr.bin/script/script.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/usr.bin/script/script.c b/usr.bin/script/script.c index 83b3cce43cd..102141a0001 100644 --- a/usr.bin/script/script.c +++ b/usr.bin/script/script.c @@ -1,4 +1,4 @@ -/* $OpenBSD: script.c,v 1.26 2015/03/15 00:41:28 millert Exp $ */ +/* $OpenBSD: script.c,v 1.27 2015/07/19 06:12:06 deraadt Exp $ */ /* $NetBSD: script.c,v 1.3 1994/12/21 08:55:43 jtc Exp $ */ /* @@ -139,9 +139,6 @@ main(int argc, char *argv[]) bzero(&sa, sizeof sa); sigemptyset(&sa.sa_mask); - sa.sa_handler = finish; - (void)sigaction(SIGCHLD, &sa, NULL); - sa.sa_handler = handlesigwinch; sa.sa_flags = SA_RESTART; (void)sigaction(SIGWINCH, &sa, NULL); @@ -163,6 +160,11 @@ main(int argc, char *argv[]) doshell(); } + bzero(&sa, sizeof sa); + sigemptyset(&sa.sa_mask); + sa.sa_handler = finish; + (void)sigaction(SIGCHLD, &sa, NULL); + (void)fclose(fscript); while (1) { if (dead) @@ -241,6 +243,11 @@ dooutput(void) sa.sa_handler = scriptflush; (void)sigaction(SIGALRM, &sa, NULL); + bzero(&sa, sizeof sa); + sigemptyset(&sa.sa_mask); + sa.sa_handler = SIG_IGN; + (void)sigaction(SIGCHLD, &sa, NULL); + value.it_interval.tv_sec = 30; value.it_interval.tv_usec = 0; value.it_value = value.it_interval; |