diff options
| author | Roy Marples <roy@marples.name> | 2008-05-27 19:06:48 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2008-05-27 19:06:48 +0000 |
| commit | caecf62c79ac0cf15a8b02f365c4976f28621606 (patch) | |
| tree | 97bfb39a10f210afd57b00e3c828fed0bd418c1c /signals.c | |
| parent | 440bb73290dc30dd5dc80e5ad8b5c1c78a7c27d8 (diff) | |
| download | dhcpcd-caecf62c79ac0cf15a8b02f365c4976f28621606.tar.xz | |
Replace the signal clear with a pipe so child can notify parent when to exit.
Diffstat (limited to 'signals.c')
| -rw-r--r-- | signals.c | 21 |
1 files changed, 6 insertions, 15 deletions
@@ -134,38 +134,29 @@ signal_init(void) } static int -signal_handle(void (*func)(int), int restore) +signal_handle(void (*func)(int)) { unsigned int i; - struct sigaction sa, sa_old; + struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_handler = func; sigemptyset(&sa.sa_mask); - for (i = 0; i < sizeof(handle_sigs) / sizeof(handle_sigs[0]); i++) { - if (sigaction(handle_sigs[i], &sa, &sa_old) == -1) + for (i = 0; i < sizeof(handle_sigs) / sizeof(handle_sigs[0]); i++) + if (sigaction(handle_sigs[i], &sa, NULL) == -1) return -1; - if (restore && sigaction(handle_sigs[i], &sa_old, NULL) == -1) - return -1; - } return 0; } int signal_setup(void) { - return signal_handle(signal_handler, 0); + return signal_handle(signal_handler); } int signal_reset(void) { - return signal_handle(SIG_DFL, 0); -} - -int -signal_clear(void) -{ - return signal_handle(SIG_IGN, 1); + return signal_handle(SIG_DFL); } |
