From 7f90d25a4c4214a53d6a1a831d166c11467b992f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Tue, 6 Aug 1996 13:34:28 +0200
Subject: [PATCH] now possible to IGNore signals

Rev: src/lpc_signal.c:1.12
---
 src/lpc_signal.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/lpc_signal.c b/src/lpc_signal.c
index 97d7234a37..a2659bc411 100644
--- a/src/lpc_signal.c
+++ b/src/lpc_signal.c
@@ -296,12 +296,6 @@ static void f_signal(int args)
   if(args < 1)
     error("Too few arguments to signal()\n");
 
-  if(args == 1)
-  {
-    push_int(0);
-    args++;
-  }
-  
   if(sp[-args].type != T_INT)
   {
     error("Bad argument 1 to signal()\n");
@@ -313,9 +307,11 @@ static void f_signal(int args)
     error("Signal out of range.\n");
   }
 
-  assign_svalue(signal_callbacks + signum, sp+1-args);
-  if(IS_ZERO(sp+1-args))
+  if(args == 1)
   {
+    push_int(0);
+    args++;
+
     switch(signum)
     {
     case SIGCHLD:
@@ -329,9 +325,15 @@ static void f_signal(int args)
     default:
       func=(sigfunctype) SIG_DFL;
     }
-  }else{
-    func=receive_signal;
+  } else {
+    if(IS_ZERO(sp+1-args))
+    {
+      func=(sigfunctype) SIG_IGN;
+    }else{
+      func=receive_signal;
+    }
   }
+  assign_svalue(signal_callbacks + signum, sp+1-args);
   my_signal(signum, func);
   pop_n_elems(args);
 }
-- 
GitLab