/* TODO other signal handlers */
/* We allow SIGQUIT (quickdie) at all times */
-#ifdef HAVE_SIGPROCMASK
sigdelset(&BlockSig, SIGQUIT);
-#else
- BlockSig &= ~(sigmask(SIGQUIT));
-#endif
/*
* Unblock signals (they were blocked when the postmaster forked us)
#include "gtm/pqsignal.h"
-
-#ifdef HAVE_SIGPROCMASK
sigset_t UnBlockSig,
BlockSig,
AuthBlockSig;
-#else
-int UnBlockSig,
- BlockSig,
- AuthBlockSig;
-#endif
-
/*
* Initialize BlockSig, UnBlockSig, and AuthBlockSig.
void
pqinitmask(void)
{
-#ifdef HAVE_SIGPROCMASK
-
sigemptyset(&UnBlockSig);
/* First set all signals, then clear some. */
#ifdef SIGALRM
sigdelset(&AuthBlockSig, SIGALRM);
#endif
-#else
- /* Set the signals we want. */
- UnBlockSig = 0;
- BlockSig = sigmask(SIGQUIT) |
- sigmask(SIGTERM) | sigmask(SIGALRM) |
- /* common signals between two */
- sigmask(SIGHUP) |
- sigmask(SIGINT) | sigmask(SIGUSR1) |
- sigmask(SIGUSR2) | sigmask(SIGCHLD) |
- sigmask(SIGWINCH) | sigmask(SIGFPE);
- AuthBlockSig = sigmask(SIGHUP) |
- sigmask(SIGINT) | sigmask(SIGUSR1) |
- sigmask(SIGUSR2) | sigmask(SIGCHLD) |
- sigmask(SIGWINCH) | sigmask(SIGFPE);
-#endif
}
#include <signal.h>
-#ifdef HAVE_SIGPROCMASK
-extern sigset_t UnBlockSig,
- BlockSig,
- AuthBlockSig;
-
-#define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL)
-#else
-extern int UnBlockSig,
- BlockSig,
- AuthBlockSig;
-
#ifndef WIN32
-#define PG_SETMASK(mask) sigsetmask(*((int*)(mask)))
+#define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL)
#else
+/* Emulate POSIX sigset_t APIs on Windows */
+typedef int sigset_t;
#define PG_SETMASK(mask) pqsigsetmask(*((int*)(mask)))
int pqsigsetmask(int mask);
#endif
-#endif
+
+extern sigset_t UnBlockSig,
+ BlockSig,
+ AuthBlockSig;
extern void pqinitmask(void);