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) */