Mercurial > octave-nkf
diff src/sighandlers.cc @ 10246:f751dae7aab8
use gnulib signal modules
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 02 Feb 2010 04:39:29 -0500 |
parents | d4f813c3f5ed |
children | 57a59eae83cc |
line wrap: on
line diff
--- a/src/sighandlers.cc Tue Feb 02 02:58:46 2010 -0500 +++ b/src/sighandlers.cc Tue Feb 02 04:39:29 2010 -0500 @@ -71,21 +71,6 @@ // Similar to Vsighup_dumps_octave_core, but for SIGTERM signal. static bool Vsigterm_dumps_octave_core = true; -#if defined (RETSIGTYPE_IS_VOID) -#define SIGHANDLER_RETURN(status) return -#else -#define SIGHANDLER_RETURN(status) return status -#endif - -#if defined (MUST_REINSTALL_SIGHANDLERS) -#define MAYBE_REINSTALL_SIGHANDLER(sig, handler) \ - octave_set_signal_handler (sig, handler) -#define REINSTALL_USES_SIG 1 -#else -#define MAYBE_REINSTALL_SIGHANDLER(sig, handler) \ - do { } while (0) -#endif - #if defined (__EMX__) #define MAYBE_ACK_SIGNAL(sig) \ octave_set_signal_handler (sig, SIG_ACK) @@ -188,7 +173,6 @@ octave_set_signal_handler (int sig, sig_handler *handler, bool restart_syscalls) { -#if defined (HAVE_POSIX_SIGNALS) struct sigaction act, oact; act.sa_handler = handler; @@ -212,23 +196,18 @@ sigaction (sig, &act, &oact); return oact.sa_handler; -#else - return signal (sig, handler); -#endif } -static RETSIGTYPE +static void generic_sig_handler (int sig) { my_friendly_exit (strsignal (sig), sig); - - SIGHANDLER_RETURN (0); } // Handle SIGCHLD. #ifdef SIGCHLD -static RETSIGTYPE +static void sigchld_handler (int /* sig */) { volatile octave_interrupt_handler saved_interrupt_handler @@ -265,22 +244,16 @@ #endif MAYBE_ACK_SIGNAL (SIGCHLD); - - MAYBE_REINSTALL_SIGHANDLER (SIGCHLD, sigchld_handler); - - SIGHANDLER_RETURN (0); } #endif /* defined(SIGCHLD) */ #ifdef SIGFPE #if defined (__alpha__) -static RETSIGTYPE +static void sigfpe_handler (int /* sig */) { MAYBE_ACK_SIGNAL (SIGFPE); - MAYBE_REINSTALL_SIGHANDLER (SIGFPE, sigfpe_handler); - if (can_interrupt && octave_interrupt_state >= 0) { octave_signal_caught = 1; @@ -289,20 +262,16 @@ octave_interrupt_state++; } - - SIGHANDLER_RETURN (0); } #endif /* defined(__alpha__) */ #endif /* defined(SIGFPE) */ #if defined (SIGHUP) || defined (SIGTERM) -static RETSIGTYPE +static void sig_hup_or_term_handler (int sig) { MAYBE_ACK_SIGNAL (sig); - MAYBE_REINSTALL_SIGHANDLER (sig, sig_hup_or_term_handler); - switch (sig) { #if defined (SIGHUP) @@ -328,23 +297,17 @@ } clean_up_and_exit (0); - - SIGHANDLER_RETURN (0); } #endif #if 0 #if defined (SIGWINCH) -static RETSIGTYPE +static void sigwinch_handler (int /* sig */) { MAYBE_ACK_SIGNAL (SIGWINCH); - MAYBE_REINSTALL_SIGHANDLER (SIGWINCH, sigwinch_handler); - command_editor::resize_terminal (); - - SIGHANDLER_RETURN (0); } #endif #endif @@ -411,13 +374,11 @@ } -static RETSIGTYPE +static void sigint_handler (int sig) { MAYBE_ACK_SIGNAL (sig); - MAYBE_REINSTALL_SIGHANDLER (sig, sigint_handler); - #ifdef USE_W32_SIGINT if (w32_in_main_thread ()) user_abort (strsignal (sig), sig); @@ -426,18 +387,14 @@ #else user_abort (strsignal (sig), sig); #endif - - SIGHANDLER_RETURN (0); } #ifdef SIGPIPE -static RETSIGTYPE +static void sigpipe_handler (int /* sig */) { MAYBE_ACK_SIGNAL (SIGPIPE); - MAYBE_REINSTALL_SIGHANDLER (SIGPIPE, sigpipe_handler); - octave_signal_caught = 1; octave_signals_caught[SIGPIPE] = true; @@ -446,8 +403,6 @@ if (pipe_handler_error_count++ > 100 && octave_interrupt_state >= 0) octave_interrupt_state++; - - SIGHANDLER_RETURN (0); } #endif /* defined(SIGPIPE) */