X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fsignal.c;h=395e8e517679397828d7f9b12c685f74cb85ea37;hb=502af2167f7c218366666ca4944bd7cc54b5b19a;hp=c8d6e04cd4a2ea446b12f5da9d941a4f9fa26b9e;hpb=1d943b33c95c2d3f366d50e22e8b134029d5a579;p=oweals%2Fgnunet.git diff --git a/src/util/signal.c b/src/util/signal.c index c8d6e04cd..395e8e517 100644 --- a/src/util/signal.c +++ b/src/util/signal.c @@ -47,6 +47,7 @@ struct GNUNET_SIGNAL_Context * GNUNET_SIGNAL_handler_install (int signum, GNUNET_SIGNAL_Handler handler) { struct GNUNET_SIGNAL_Context *ret; + #ifndef MINGW struct sigaction sig; #endif @@ -55,6 +56,7 @@ GNUNET_SIGNAL_handler_install (int signum, GNUNET_SIGNAL_Handler handler) ret->sig = signum; ret->method = handler; #ifndef MINGW + memset (&sig, 0, sizeof (sig)); sig.sa_handler = (void *) handler; sigemptyset (&sig.sa_mask); #ifdef SA_INTERRUPT @@ -67,7 +69,15 @@ GNUNET_SIGNAL_handler_install (int signum, GNUNET_SIGNAL_Handler handler) if (signum == GNUNET_SIGCHLD) w32_sigchld_handler = handler; else - signal (signum, handler); + { + __p_sig_fn_t sigret = signal (signum, (__p_sig_fn_t) handler); + + if (sigret == SIG_ERR) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + _("signal (%d, %p) returned %d.\n"), signum, handler, sigret); + } + } #endif return ret; }