#include <stdio.h>
#include <signal.h>
#include "tmextern.h"
void
catch_signals(void)
{
sigset_t cset;
struct sigaction sigact;
#ifdef DEBUG
debug("in catch_signals");
#endif
cset = Origmask;
(void) sigdelset(&cset, SIGTERM);
(void) sigdelset(&cset, SIGCLD);
(void) sigdelset(&cset, SIGPOLL);
#ifdef DEBUG
(void) sigdelset(&cset, SIGUSR1);
(void) sigdelset(&cset, SIGUSR2);
#endif
(void) sigprocmask(SIG_SETMASK, &cset, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = sigterm;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGTERM);
(void) sigaction(SIGTERM, &sigact, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = sigchild;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaction(SIGCLD, &sigact, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = sigpoll_catch;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGPOLL);
(void) sigaction(SIGPOLL, &sigact, NULL);
#ifdef DEBUG
sigact.sa_flags = 0;
sigact.sa_handler = dump_pmtab;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGUSR1);
(void) sigaction(SIGUSR1, &sigact, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = dump_ttydefs;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGUSR2);
(void) sigaction(SIGUSR2, &sigact, NULL);
#endif
}
void
child_sigcatch(void)
{
struct sigaction sigact;
sigset_t cset;
cset = Origmask;
(void) sigdelset(&cset, SIGINT);
(void) sigdelset(&cset, SIGPOLL);
(void) sigprocmask(SIG_SETMASK, &cset, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = sigpoll;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGPOLL);
(void) sigaction(SIGPOLL, &sigact, NULL);
sigact.sa_flags = 0;
sigact.sa_handler = sigint;
(void) sigemptyset(&sigact.sa_mask);
(void) sigaddset(&sigact.sa_mask, SIGINT);
(void) sigaction(SIGINT, &sigact, NULL);
}