summaryrefslogtreecommitdiff
path: root/runit
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-02-03 01:47:56 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-02-03 01:47:56 +0000
commit0aa84906936bd99ea8627a24b8ad2fdeedc7e928 (patch)
treeaf2d6fa3dabfb8b7aafd8ca7a33ddc872da1758c /runit
parent64392905ef3f17db48e0e16e6d0b232f95e301a7 (diff)
downloadbusybox-w32-0aa84906936bd99ea8627a24b8ad2fdeedc7e928.tar.gz
busybox-w32-0aa84906936bd99ea8627a24b8ad2fdeedc7e928.tar.bz2
busybox-w32-0aa84906936bd99ea8627a24b8ad2fdeedc7e928.zip
sigset_t blocked_sigset is too big for static (128 bytes)
Diffstat (limited to 'runit')
-rw-r--r--runit/svlogd.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/runit/svlogd.c b/runit/svlogd.c
index f0e9aaf6f..0f17eec7b 100644
--- a/runit/svlogd.c
+++ b/runit/svlogd.c
@@ -54,7 +54,7 @@ static smallint tmaxflag;
54static char repl; 54static char repl;
55static const char *replace = ""; 55static const char *replace = "";
56 56
57sigset_t blocked_sigset; 57static sigset_t *blocked_sigset;
58static iopause_fd input; 58static iopause_fd input;
59static int fl_flag_0; 59static int fl_flag_0;
60 60
@@ -646,9 +646,9 @@ static int buffer_pread(int fd, char *s, unsigned len, struct taia *now)
646 } 646 }
647 647
648 while (1) { 648 while (1) {
649 sigprocmask(SIG_UNBLOCK, &blocked_sigset, NULL); 649 sigprocmask(SIG_UNBLOCK, blocked_sigset, NULL);
650 iopause(&input, 1, &trotate, now); 650 iopause(&input, 1, &trotate, now);
651 sigprocmask(SIG_BLOCK, &blocked_sigset, NULL); 651 sigprocmask(SIG_BLOCK, blocked_sigset, NULL);
652 i = ndelay_read(fd, s, len); 652 i = ndelay_read(fd, s, len);
653 if (i >= 0) break; 653 if (i >= 0) break;
654 if (errno != EAGAIN) { 654 if (errno != EAGAIN) {
@@ -748,6 +748,7 @@ static void logmatch(struct logdir *ld)
748 748
749int svlogd_main(int argc, char **argv) 749int svlogd_main(int argc, char **argv)
750{ 750{
751 sigset_t ss;
751 char *r,*l,*b; 752 char *r,*l,*b;
752 ssize_t stdin_cnt = 0; 753 ssize_t stdin_cnt = 0;
753 int i; 754 int i;
@@ -801,12 +802,13 @@ int svlogd_main(int argc, char **argv)
801 * with the same stdin */ 802 * with the same stdin */
802 fl_flag_0 = fcntl(0, F_GETFL, 0); 803 fl_flag_0 = fcntl(0, F_GETFL, 0);
803 804
804 sigemptyset(&blocked_sigset); 805 blocked_sigset = &ss;
805 sigaddset(&blocked_sigset, SIGTERM); 806 sigemptyset(&ss);
806 sigaddset(&blocked_sigset, SIGCHLD); 807 sigaddset(&ss, SIGTERM);
807 sigaddset(&blocked_sigset, SIGALRM); 808 sigaddset(&ss, SIGCHLD);
808 sigaddset(&blocked_sigset, SIGHUP); 809 sigaddset(&ss, SIGALRM);
809 sigprocmask(SIG_BLOCK, &blocked_sigset, NULL); 810 sigaddset(&ss, SIGHUP);
811 sigprocmask(SIG_BLOCK, &ss, NULL);
810 sig_catch(SIGTERM, sig_term_handler); 812 sig_catch(SIGTERM, sig_term_handler);
811 sig_catch(SIGCHLD, sig_child_handler); 813 sig_catch(SIGCHLD, sig_child_handler);
812 sig_catch(SIGALRM, sig_alarm_handler); 814 sig_catch(SIGALRM, sig_alarm_handler);