Mercurial > octave
diff src/sighandlers.cc @ 2705:18395aaeafb7
[project @ 1997-02-20 04:56:43 by jwe]
author | jwe |
---|---|
date | Thu, 20 Feb 1997 04:58:02 +0000 |
parents | f4d0604cbcc4 |
children | 14d07e4a0265 |
line wrap: on
line diff
--- a/src/sighandlers.cc Wed Feb 19 19:37:10 1997 +0000 +++ b/src/sighandlers.cc Thu Feb 20 04:58:02 1997 +0000 @@ -103,20 +103,6 @@ #endif } -struct -octave_interrupt_handler -{ -#ifdef SIGINT - sig_handler *int_handler; -#endif - -#ifdef SIGBREAK - sig_handler *brk_handler; -#endif -}; - -static octave_interrupt_handler the_interrupt_handler; - static void my_friendly_exit (const char *sig_name, int sig_number) { @@ -189,7 +175,7 @@ static RETSIGTYPE sigchld_handler (int /* sig */) { - volatile octave_interrupt_handler *saved_interrupt_handler + volatile octave_interrupt_handler saved_interrupt_handler = octave_ignore_interrupts (); // I wonder if this is really right, or if SIGCHLD should just be @@ -313,55 +299,52 @@ SIGHANDLER_RETURN (0); } -void +octave_interrupt_handler octave_catch_interrupts (void) { -#ifdef SIGINT - octave_set_signal_handler (SIGINT, sigint_handler); - - the_interrupt_handler.int_handler = sigint_handler; -#endif - -#ifdef SIGBREAK - octave_set_signal_handler (SIGBREAK, sigint_handler); + octave_interrupt_handler retval; - the_interrupt_handler.brk_handler = sigint_handler; -#endif -} - -octave_interrupt_handler * -octave_ignore_interrupts (void) -{ #ifdef SIGINT - the_interrupt_handler.int_handler - = octave_set_signal_handler (SIGINT, SIG_IGN); + retval.int_handler = octave_set_signal_handler (SIGINT, sigint_handler); #endif #ifdef SIGBREAK - the_interrupt_handler.int_handler - = octave_set_signal_handler (SIGBREAK, SIG_IGN); + retval.brk_handler = octave_set_signal_handler (SIGBREAK, sigint_handler); #endif - - return &the_interrupt_handler; + + return retval; } -octave_interrupt_handler * -octave_set_interrupt_handler (const volatile octave_interrupt_handler *h) +octave_interrupt_handler +octave_ignore_interrupts (void) { - if (h) - { + octave_interrupt_handler retval; + #ifdef SIGINT - the_interrupt_handler.int_handler - = octave_set_signal_handler (SIGINT, h->int_handler); + retval.int_handler = octave_set_signal_handler (SIGINT, SIG_IGN); #endif #ifdef SIGBREAK - the_interrupt_handler.int_handler - = octave_set_signal_handler (SIGBREAK, h->brk_handler); + retval.brk_handler = octave_set_signal_handler (SIGBREAK, SIG_IGN); #endif - } - - return &the_interrupt_handler; + + return retval; +} + +octave_interrupt_handler +octave_set_interrupt_handler (const volatile octave_interrupt_handler& h) +{ + octave_interrupt_handler retval; + +#ifdef SIGINT + retval.int_handler = octave_set_signal_handler (SIGINT, h.int_handler); +#endif + +#ifdef SIGBREAK + retval.brk_handler = octave_set_signal_handler (SIGBREAK, h.brk_handler); +#endif + + return retval; } // Install all the handlers for the signals we might care about.