diff options
author | Holger Freyther <zecke@selfish.org> | 2009-02-14 22:51:10 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2009-02-14 22:51:10 +0000 |
commit | e4b3fa3633d0d68c17d77f7d2669f8671332ff1f (patch) | |
tree | bf557b81da986b035e2d6c3e5bc261bf2e7b818c /src/signal.c | |
parent | 053e09d102e07441974dd65b1a55e08991bf0857 (diff) |
[signal] Move the area into the struct signal_data...
Remove the parameter and move the signal kind into the
signal struct. Make register/deregister fully symmetric.
Diffstat (limited to 'src/signal.c')
-rw-r--r-- | src/signal.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/signal.c b/src/signal.c index d4a4a7ce2..ea0067256 100644 --- a/src/signal.c +++ b/src/signal.c @@ -48,12 +48,13 @@ void register_signal_handler(int areas, llist_add_tail(&signal_handler_list, &sig_data->entry); } -void remove_signal_handler(int (*sig_handler)(struct signal_data *, void *), void *data) +void remove_signal_handler(int areas, int (*sig_handler)(struct signal_data *, void *), void *data) { struct signal_handler *handler; llist_for_each_entry(handler, &signal_handler_list, entry) { - if (handler->sig_handler == sig_handler && handler->data == data) { + if (handler->sig_handler == sig_handler + && handler->data == data && areas == handler->areas) { llist_del(&handler->entry); free(handler); break; @@ -62,12 +63,12 @@ void remove_signal_handler(int (*sig_handler)(struct signal_data *, void *), voi } -void dispatch_signal(int area, struct signal_data *data) +void dispatch_signal(struct signal_data *data) { struct signal_handler *handler; llist_for_each_entry(handler, &signal_handler_list, entry) { - if (handler->areas & area) { + if (handler->areas & data->area) { (*handler->sig_handler)(data, handler->data); } } |