From 061ca93e710756eafbc74321caf5913463b590cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Thu, 1 Apr 1999 18:22:26 -0800 Subject: [PATCH] now traps SIG{INT,HUP,QUIT} and calls exit(1) Rev: src/signal_handler.c:1.119 --- src/signal_handler.c | 50 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/signal_handler.c b/src/signal_handler.c index 59fffddf13..1136129fd6 100644 --- a/src/signal_handler.c +++ b/src/signal_handler.c @@ -23,7 +23,7 @@ #include "builtin_functions.h" #include <signal.h> -RCSID("$Id: signal_handler.c,v 1.118 1999/03/13 21:04:05 grubba Exp $"); +RCSID("$Id: signal_handler.c,v 1.119 1999/04/02 02:22:26 hubbe Exp $"); #ifdef HAVE_PASSWD_H # include <passwd.h> @@ -449,9 +449,27 @@ void check_signals(struct callback *foo, void *bar, void *gazonk) } #endif - push_int(sigbuf[lastsig]); - apply_svalue(signal_callbacks + sigbuf[lastsig], 1); - pop_stack(); + if(IS_ZERO(signal_callbacks + sigbuf[lastsig])) + { + switch(sigbuf[lastsig]) + { +#ifdef SIGINT + case SIGINT: +#endif +#ifdef SIGHUP + case SIGHUP: +#endif +#ifdef SIGQUIT + case SIGQUIT: +#endif + push_int(1); + f_exit(1); + } + }else{ + push_int(sigbuf[lastsig]); + apply_svalue(signal_callbacks + sigbuf[lastsig], 1); + pop_stack(); + } } UNSET_ONERROR(ebuf); @@ -538,6 +556,18 @@ static void f_signal(int args) break; #endif +#ifdef SIGHUP + case SIGHUP: +#endif +#ifdef SIGINT + case SIGINT: +#endif +#ifdef SIGQUIT + case SIGQUIT: +#endif + func=receive_signal; + break; + default: func=(sigfunctype) SIG_DFL; } @@ -2693,6 +2723,18 @@ void init_signals(void) my_signal(SIGFPE, SIG_IGN); #endif +#ifdef SIGINT + my_signal(SIGINT, receive_signal); +#endif + +#ifdef SIGHUP + my_signal(SIGHUP, receive_signal); +#endif + +#ifdef SIGQUIT + my_signal(SIGQUIT, receive_signal); +#endif + for(e=0;e<MAX_SIGNALS;e++) signal_callbacks[e].type=T_INT; -- GitLab