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