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 | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/main.c b/src/main.c index c8c16e762..2ebd813a7 100644 --- a/src/main.c +++ b/src/main.c @@ -1054,40 +1054,42 @@ main(int argc, char **argv) fcn is in cpitf.c*/ ft_cpinit(); - /* To catch interrupts during .spiceinit... */ - if (SETJMP(jbuf, 1)) { - fprintf(cp_err, "Warning: error executing .spiceinit.\n"); + /* Set up signal handling */ + if (!ft_batchmode) { + /* Set up interrupt handler */ + (void) signal(SIGINT, (SIGNAL_FUNCTION) ft_sigintr); - } 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); + /* floating point exception */ + (void) signal(SIGFPE, (SIGNAL_FUNCTION) sigfloat); #ifdef SIGTSTP - signal(SIGTSTP, (SIGNAL_FUNCTION) sigstop); + signal(SIGTSTP, (SIGNAL_FUNCTION) sigstop); #endif - } + } - /* Set up signal handling for fatal errors. */ - signal(SIGILL, (SIGNAL_FUNCTION) sigill); + /* Set up signal handling for fatal errors. */ + signal(SIGILL, (SIGNAL_FUNCTION) sigill); #ifdef SIGBUS - signal(SIGBUS, (SIGNAL_FUNCTION) 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); + signal(SIGSEGV, (SIGNAL_FUNCTION) sigsegv); #endif #ifdef SIGSYS - signal(SIGSYS, (SIGNAL_FUNCTION) sig_sys); + signal(SIGSYS, (SIGNAL_FUNCTION) sig_sys); #endif + + /* To catch interrupts during .spiceinit... */ + if (SETJMP(jbuf, 1)) { + + fprintf(cp_err, "Warning: error executing .spiceinit.\n"); + + } else { + if (readinit) { /* load user's initialisation file try accessing the initialisation file in the current directory