FbTk/SignalHandler.cc: Use HAVE_SIGACTION, with signal() fallback This fixes platforms without sigaction, like Windows.
Ryan Pavlik rpavlik@iastate.edu
1 files changed,
7 insertions(+),
1 deletions(-)
jump to
M
src/FbTk/SignalHandler.cc
→
src/FbTk/SignalHandler.cc
@@ -46,6 +46,7 @@ // get old signal handler for this signum
if (oldhandler_ret != 0) *oldhandler_ret = s_signal_handler[signum]; +#ifdef HAVE_SIGACTION struct sigaction sa; // set callback sa.sa_handler = SignalHandler::handleSignal;@@ -54,7 +55,12 @@ sa.sa_flags = 0;
if (sigaction(signum, &sa, 0) == -1) return false; - +#else + // Fallback code for Windows and other platforms lacking sigaction. + if (signal(signum, &SignalHandler::handleSignal) == SIG_ERR) { + return false; + } +#endif s_signal_handler[signum] = eh; return true;