summaryrefslogtreecommitdiffstats
path: root/signals.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-05-27 19:06:48 +0000
committerRoy Marples <roy@marples.name>2008-05-27 19:06:48 +0000
commitcaecf62c79ac0cf15a8b02f365c4976f28621606 (patch)
tree97bfb39a10f210afd57b00e3c828fed0bd418c1c /signals.c
parent440bb73290dc30dd5dc80e5ad8b5c1c78a7c27d8 (diff)
downloaddhcpcd-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.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/signals.c b/signals.c
index c0b60e31..4559749c 100644
--- a/signals.c
+++ b/signals.c
@@ -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);
}