Hi,
Can we remove the #ifdef HAVE_SIGACTION from libevent? The only
reason to keep it, would be make merging with upstream easier. Do
we expect any new 1.X versions from upstream?
ok?
bluhm
Index: lib/libevent/evsignal.h
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/lib/libevent/evsignal.h,v
retrieving revision 1.4
diff -u -p -r1.4 evsignal.h
--- lib/libevent/evsignal.h 21 Apr 2010 20:02:40 -0000 1.4
+++ lib/libevent/evsignal.h 5 Oct 2014 20:21:05 -0000
@@ -29,8 +29,6 @@
#ifndef _EVSIGNAL_H_
#define _EVSIGNAL_H_
-typedef void (*ev_sighandler_t)(int);
-
struct evsignal_info {
struct event ev_signal;
int ev_signal_pair[2];
@@ -38,11 +36,7 @@ struct evsignal_info {
volatile sig_atomic_t evsignal_caught;
struct event_list evsigevents[NSIG];
sig_atomic_t evsigcaught[NSIG];
-#ifdef HAVE_SIGACTION
struct sigaction **sh_old;
-#else
- ev_sighandler_t **sh_old;
-#endif
int sh_old_max;
};
int evsignal_init(struct event_base *);
Index: lib/libevent/signal.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/lib/libevent/signal.c,v
retrieving revision 1.16
diff -u -p -r1.16 signal.c
--- lib/libevent/signal.c 29 Apr 2013 00:28:23 -0000 1.16
+++ lib/libevent/signal.c 5 Oct 2014 20:06:03 -0000
@@ -140,11 +140,7 @@ int
_evsignal_set_handler(struct event_base *base,
int evsignal, void (*handler)(int))
{
-#ifdef HAVE_SIGACTION
struct sigaction sa;
-#else
- ev_sighandler_t sh;
-#endif
struct evsignal_info *sig = &base->sig;
void *p;
@@ -177,7 +173,6 @@ _evsignal_set_handler(struct event_base
}
/* save previous handler and setup new handler */
-#ifdef HAVE_SIGACTION
memset(&sa, 0, sizeof(sa));
sa.sa_handler = handler;
sa.sa_flags |= SA_RESTART;
@@ -189,15 +184,6 @@ _evsignal_set_handler(struct event_base
sig->sh_old[evsignal] = NULL;
return (-1);
}
-#else
- if ((sh = signal(evsignal, handler)) == SIG_ERR) {
- event_warn("signal");
- free(sig->sh_old[evsignal]);
- sig->sh_old[evsignal] = NULL;
- return (-1);
- }
- *sig->sh_old[evsignal] = sh;
-#endif
return (0);
}
@@ -240,26 +226,15 @@ _evsignal_restore_handler(struct event_b
{
int ret = 0;
struct evsignal_info *sig = &base->sig;
-#ifdef HAVE_SIGACTION
struct sigaction *sh;
-#else
- ev_sighandler_t *sh;
-#endif
/* restore previous handler */
sh = sig->sh_old[evsignal];
sig->sh_old[evsignal] = NULL;
-#ifdef HAVE_SIGACTION
if (sigaction(evsignal, sh, NULL) == -1) {
event_warn("sigaction");
ret = -1;
}
-#else
- if (signal(evsignal, *sh) == SIG_ERR) {
- event_warn("signal");
- ret = -1;
- }
-#endif
free(sh);
return ret;
@@ -299,10 +274,6 @@ evsignal_handler(int sig)
evsignal_base->sig.evsigcaught[sig]++;
evsignal_base->sig.evsignal_caught = 1;
-
-#ifndef HAVE_SIGACTION
- signal(sig, evsignal_handler);
-#endif
/* Wake up our notification mechanism */
send(evsignal_base->sig.ev_signal_pair[0], "a", 1, 0);