summaryrefslogtreecommitdiffstats
path: root/usr.bin/script/script.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/script/script.c')
-rw-r--r--usr.bin/script/script.c15
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;