$NetBSD: patch-ah,v 1.3 2005/05/29 14:38:33 wiz Exp $

--- glunix/src/signal/csignal.cc.orig	1996-10-25 00:40:47.000000000 +0200
+++ glunix/src/signal/csignal.cc
@@ -111,6 +111,9 @@ static Debug_Level signal_debugLevel;
 #ifdef __svr4__
 #define MAX_SIGNAL  35
 #endif
+#ifdef __NetBSD__
+#define MAX_SIGNAL NSIG
+#endif
 
 #define SIGNAL_MAX_HANDLERS  5
 
@@ -216,12 +219,18 @@ Signal_Initialize(void)
     sigaddset(&allSignals, SIGTERM);
     sigaddset(&allSignals, SIGUSR1);
     sigaddset(&allSignals, SIGUSR2);
+#ifndef __NetBSD__
     sigaddset(&allSignals, SIGCLD);
+#endif
     sigaddset(&allSignals, SIGCHLD);
+#ifndef __NetBSD__
     sigaddset(&allSignals, SIGPWR);
+#endif
     sigaddset(&allSignals, SIGWINCH);
     sigaddset(&allSignals, SIGURG);
+#ifndef __NetBSD__
     sigaddset(&allSignals, SIGPOLL);
+#endif
     sigaddset(&allSignals, SIGIO);
     sigaddset(&allSignals, SIGSTOP);
     sigaddset(&allSignals, SIGTSTP);
@@ -232,8 +241,9 @@ Signal_Initialize(void)
     sigaddset(&allSignals, SIGPROF);
     sigaddset(&allSignals, SIGXCPU);
     sigaddset(&allSignals, SIGXFSZ);
+#ifndef __NetBSD__
     sigaddset(&allSignals, SIGWAITING);
-
+#endif
     initialized = True;
     cleanedUp = False;
 
@@ -243,7 +253,7 @@ Signal_Initialize(void)
 		   NULL /* callback function */, 0 /* callback arg */));
 
 #ifdef DEBUG
-    debug_cleanupCallbacks->Add((void (*)(int, void *))Signal_Cleanup, NULL);
+    debug_cleanupCallbacks->Add((void (*)(int, void *))Signal_Cleanup, 0);
 #endif
 
     return True;
@@ -438,7 +448,11 @@ Signal_CheckInterest(int sig)
     } else {
 	if (found) {
 	    // Otherwise, we're not catching it and we should be
+#ifdef __NetBSD__
+	    signal(sig, CatchSignal);
+#else
 	    sigset(sig, CatchSignal);
+#endif
 	}
     }
     return;
@@ -863,11 +877,18 @@ Signal_DispatchMode(void)
 Bool
 Signal_Hold(int sig)
 {
-    if (sighold(sig) < 0) {
-	return False;
-    } else {
-	return True;
-    }
+#ifdef __NetBSD__
+int i;
+   i = sigsetmask(0); 
+   i &= ~sigmask(sig); 
+   if (sigsetmask(i) < 0) {
+#else
+   if (sighold(sig) < 0) {
+#endif
+     return False;
+   } else {
+     return True;
+   }
 }
 
 /******************************************************************************
@@ -885,7 +906,11 @@ Signal_Hold(int sig)
 Bool
 Signal_Release(int sig)
 {
+#ifdef __NetBSD__
+    if (sigsetmask(sigmask(sig)) < 0 ) {
+#else
     if (sigrelse(sig) < 0) {
+#endif
 	return False;
     } else {
 	return True;
