Mercurial > octave
diff src/sighandlers.cc @ 834:44ce29d8cb7b
[project @ 1994-10-19 18:17:44 by jwe]
author | jwe |
---|---|
date | Wed, 19 Oct 1994 18:19:16 +0000 |
parents | 5338832d2cf6 |
children | b8530da02bb7 |
line wrap: on
line diff
--- a/src/sighandlers.cc Wed Oct 19 15:28:39 1994 +0000 +++ b/src/sighandlers.cc Wed Oct 19 18:19:16 1994 +0000 @@ -25,6 +25,10 @@ #include "config.h" #endif +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif #include <new.h> #include <signal.h> @@ -56,55 +60,31 @@ clean_up_and_exit (1); } -// Some of these may eventually perform different actions... - static RETSIGTYPE -sigabrt_handler (int i) +generic_sig_handler (int i) { - my_friendly_exit ("SIGABRT", i); -} - -static RETSIGTYPE -sigalrm_handler (int i) -{ - my_friendly_exit ("SIGALRM", i); -} - -static RETSIGTYPE -sigbus_handler (int i) -{ - my_friendly_exit ("SIGBUS", i); -} + my_friendly_exit (sys_siglist[i], i); -static RETSIGTYPE -sigemt_handler (int i) -{ - my_friendly_exit ("SIGEMT", i); -} - -static RETSIGTYPE -sigfpe_handler (int i) -{ - my_friendly_exit ("SIGFPE", i); -} - -static RETSIGTYPE -sighup_handler (int i) -{ - my_friendly_exit ("SIGHUP", i); -} - -static RETSIGTYPE -sigill_handler (int i) -{ - my_friendly_exit ("SIGILL", i); +#if RETSIGTYPE == void + return; +#else + return 0; +#endif } // Handle SIGINT by restarting the parser (see octave.cc). +// XXX FIXME XXX -- it would probably be good to try to use POSIX +// signal interface if it is available. + static RETSIGTYPE sigint_handler (int i) { +// Can this ever cause trouble on systems that don't forget signal +// handlers when they are invoked? + + signal (SIGINT, sigint_handler); + if (can_interrupt) { jump_to_top_level (); @@ -119,20 +99,13 @@ } static RETSIGTYPE -sigiot_handler (int i) -{ - my_friendly_exit ("SIGIOT", i); -} - -static RETSIGTYPE -siglost_handler (int i) -{ - my_friendly_exit ("SIGLOST", i); -} - -static RETSIGTYPE sigpipe_handler (int i) { +// Can this ever cause trouble on systems that don't forget signal +// handlers when they are invoked? + + signal (SIGPIPE, sigpipe_handler); + if (pipe_handler_error_count++ == 0) message (0, "broken pipe"); @@ -147,78 +120,6 @@ #endif } -static RETSIGTYPE -sigpoll_handler (int i) -{ - my_friendly_exit ("SIGPOLL", i); -} - -static RETSIGTYPE -sigprof_handler (int i) -{ - my_friendly_exit ("SIGPROF", i); -} - -static RETSIGTYPE -sigquit_handler (int i) -{ - my_friendly_exit ("SIGQUIT", i); -} - -static RETSIGTYPE -sigsegv_handler (int i) -{ - my_friendly_exit ("SIGSEGV", i); -} - -static RETSIGTYPE -sigsys_handler (int i) -{ - my_friendly_exit ("SIGSYS", i); -} - -static RETSIGTYPE -sigterm_handler (int i) -{ - my_friendly_exit ("SIGTERM", i); -} - -static RETSIGTYPE -sigtrap_handler (int i) -{ - my_friendly_exit ("SIGTRAP", i); -} - -static RETSIGTYPE -sigusr1_handler (int i) -{ - my_friendly_exit ("SIGUSR1", i); -} - -static RETSIGTYPE -sigusr2_handler (int i) -{ - my_friendly_exit ("SIGUSR2", i); -} - -static RETSIGTYPE -sigvtalrm_handler (int i) -{ - my_friendly_exit ("SIGVTALRM", i); -} - -static RETSIGTYPE -sigxcpu_handler (int i) -{ - my_friendly_exit ("SIGXCPU", i); -} - -static RETSIGTYPE -sigxfsz_handler (int i) -{ - my_friendly_exit ("SIGXFSZ", i); -} - // Install all the handlers for the signals we might care about. void @@ -227,31 +128,31 @@ set_new_handler (octave_new_handler); #ifdef SIGABRT - signal (SIGABRT, sigabrt_handler); + signal (SIGABRT, generic_sig_handler); #endif #ifdef SIGALRM - signal (SIGALRM, sigalrm_handler); + signal (SIGALRM, generic_sig_handler); #endif #ifdef SIGBUS - signal (SIGBUS, sigbus_handler); + signal (SIGBUS, generic_sig_handler); #endif #ifdef SIGEMT - signal (SIGEMT, sigemt_handler); + signal (SIGEMT, generic_sig_handler); #endif #ifdef SIGFPE - signal (SIGFPE, sigfpe_handler); + signal (SIGFPE, generic_sig_handler); #endif #ifdef SIGHUP - signal (SIGHUP, sighup_handler); + signal (SIGHUP, generic_sig_handler); #endif #ifdef SIGILL - signal (SIGILL, sigill_handler); + signal (SIGILL, generic_sig_handler); #endif #ifdef SIGINT @@ -259,11 +160,11 @@ #endif #ifdef SIGIOT - signal (SIGIOT, sigiot_handler); + signal (SIGIOT, generic_sig_handler); #endif #ifdef SIGLOST - signal (SIGLOST, siglost_handler); + signal (SIGLOST, generic_sig_handler); #endif #ifdef SIGPIPE @@ -271,51 +172,51 @@ #endif #ifdef SIGPOLL - signal (SIGPOLL, sigpoll_handler); + signal (SIGPOLL, generic_sig_handler); #endif #ifdef SIGPROF - signal (SIGPROF, sigprof_handler); + signal (SIGPROF, generic_sig_handler); #endif #ifdef SIGQUIT - signal (SIGQUIT, sigquit_handler); + signal (SIGQUIT, generic_sig_handler); #endif #ifdef SIGSEGV - signal (SIGSEGV, sigsegv_handler); + signal (SIGSEGV, generic_sig_handler); #endif #ifdef SIGSYS - signal (SIGSYS, sigsys_handler); + signal (SIGSYS, generic_sig_handler); #endif #ifdef SIGTERM - signal (SIGTERM, sigterm_handler); + signal (SIGTERM, generic_sig_handler); #endif #ifdef SIGTRAP - signal (SIGTRAP, sigtrap_handler); + signal (SIGTRAP, generic_sig_handler); #endif #ifdef SIGUSR1 - signal (SIGUSR1, sigusr1_handler); + signal (SIGUSR1, generic_sig_handler); #endif #ifdef SIGUSR2 - signal (SIGUSR2, sigusr2_handler); + signal (SIGUSR2, generic_sig_handler); #endif #ifdef SIGVTALRM - signal (SIGVTALRM, sigvtalrm_handler); + signal (SIGVTALRM, generic_sig_handler); #endif #ifdef SIGXCPU - signal (SIGXCPU, sigxcpu_handler); + signal (SIGXCPU, generic_sig_handler); #endif #ifdef SIGXFSZ - signal (SIGXFSZ, sigxfsz_handler); + signal (SIGXFSZ, generic_sig_handler); #endif }