101 lines
2.4 KiB
Text
101 lines
2.4 KiB
Text
$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;
|