From 44362f6760f7da76dbabddbb71d5afae4caf793f Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 2 Jul 2011 20:15:13 +0000 Subject: [PATCH] main.c, first setsig then the business --- src/main.c | 56 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/main.c b/src/main.c index c8c16e762..2ebd813a7 100644 --- a/src/main.c +++ b/src/main.c @@ -1054,6 +1054,35 @@ main(int argc, char **argv) fcn is in cpitf.c*/ ft_cpinit(); + + /* Set up signal handling */ + if (!ft_batchmode) { + /* Set up interrupt handler */ + (void) signal(SIGINT, (SIGNAL_FUNCTION) ft_sigintr); + + /* floating point exception */ + (void) signal(SIGFPE, (SIGNAL_FUNCTION) sigfloat); + +#ifdef SIGTSTP + signal(SIGTSTP, (SIGNAL_FUNCTION) sigstop); +#endif + } + + /* Set up signal handling for fatal errors. */ + signal(SIGILL, (SIGNAL_FUNCTION) sigill); + +#ifdef SIGBUS + signal(SIGBUS, (SIGNAL_FUNCTION) sigbus); +#endif +#if defined(SIGSEGV) && !defined(NGDEBUG) && defined(HAS_WINDOWS) +/* Allow a comment and graceful shutdown after seg fault */ + signal(SIGSEGV, (SIGNAL_FUNCTION) sigsegv); +#endif +#ifdef SIGSYS + signal(SIGSYS, (SIGNAL_FUNCTION) sig_sys); +#endif + + /* To catch interrupts during .spiceinit... */ if (SETJMP(jbuf, 1)) { @@ -1061,33 +1090,6 @@ main(int argc, char **argv) } else { - /* Set up signal handling */ - if (!ft_batchmode) { - /* Set up interrupt handler */ - (void) signal(SIGINT, (SIGNAL_FUNCTION) ft_sigintr); - - /* floating point exception */ - (void) signal(SIGFPE, (SIGNAL_FUNCTION) sigfloat); - -#ifdef SIGTSTP - signal(SIGTSTP, (SIGNAL_FUNCTION) sigstop); -#endif - } - - /* Set up signal handling for fatal errors. */ - signal(SIGILL, (SIGNAL_FUNCTION) sigill); - -#ifdef SIGBUS - signal(SIGBUS, (SIGNAL_FUNCTION) sigbus); -#endif -#if defined(SIGSEGV) && !defined(NGDEBUG) && defined(HAS_WINDOWS) -/* Allow a comment and graceful shutdown after seg fault */ - signal(SIGSEGV, (SIGNAL_FUNCTION) sigsegv); -#endif -#ifdef SIGSYS - signal(SIGSYS, (SIGNAL_FUNCTION) sig_sys); -#endif - if (readinit) { /* load user's initialisation file try accessing the initialisation file in the current directory