version 1.37, 2010/05/04 08:48:06 |
version 1.38, 2010/05/04 17:28:16 |
|
|
__dead void |
__dead void |
client_main(void) |
client_main(void) |
{ |
{ |
struct event ev_sigcont, ev_sigterm, ev_sigwinch; |
|
struct sigaction sigact; |
|
|
|
logfile("client"); |
logfile("client"); |
|
|
/* Note: event_init() has already been called. */ |
/* Note: event_init() has already been called. */ |
|
|
/* Set up signals. */ |
/* Set up signals. */ |
memset(&sigact, 0, sizeof sigact); |
set_signals(client_signal); |
sigemptyset(&sigact.sa_mask); |
|
sigact.sa_flags = SA_RESTART; |
|
sigact.sa_handler = SIG_IGN; |
|
if (sigaction(SIGINT, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGPIPE, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGUSR1, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGUSR2, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
if (sigaction(SIGTSTP, &sigact, NULL) != 0) |
|
fatal("sigaction failed"); |
|
|
|
signal_set(&ev_sigcont, SIGCONT, client_signal, NULL); |
|
signal_add(&ev_sigcont, NULL); |
|
signal_set(&ev_sigterm, SIGTERM, client_signal, NULL); |
|
signal_add(&ev_sigterm, NULL); |
|
signal_set(&ev_sigwinch, SIGWINCH, client_signal, NULL); |
|
signal_add(&ev_sigwinch, NULL); |
|
|
|
/* |
/* |
* imsg_read in the first client poll loop (before the terminal has |
* imsg_read in the first client poll loop (before the terminal has |