git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2c713d6)
Actually, it's not that hard to merge the Windows pqsignal code ...
2015年8月31日 19:52:56 +0000 (15:52 -0400)
2015年8月31日 19:52:56 +0000 (15:52 -0400)
... just need to typedef sigset_t and provide sigemptyset/sigfillset,
which are easy enough.


diff --git a/src/backend/libpq/pqsignal.c b/src/backend/libpq/pqsignal.c
index b19c4539f3f9ec28d5cba104695ae3397b9dee5f..064d35c91a01d27c1083f44be6de6fdc2708f830 100644 (file)
--- a/src/backend/libpq/pqsignal.c
+++ b/src/backend/libpq/pqsignal.c
@@ -18,15 +18,10 @@
#include "libpq/pqsignal.h"
-#ifndef WIN32
+/* Global variables */
sigset_t UnBlockSig,
BlockSig,
StartupBlockSig;
-#else
-int UnBlockSig,
- BlockSig,
- StartupBlockSig;
-#endif
/*
@@ -45,8 +40,6 @@ int UnBlockSig,
void
pqinitmask(void)
{
-#ifndef WIN32
-
sigemptyset(&UnBlockSig);
/* First set all signals, then clear some. */
@@ -101,19 +94,4 @@ pqinitmask(void)
#ifdef SIGALRM
sigdelset(&StartupBlockSig, SIGALRM);
#endif
-#else /* WIN32 */
- /* 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);
- StartupBlockSig = sigmask(SIGHUP) |
- sigmask(SIGINT) | sigmask(SIGUSR1) |
- sigmask(SIGUSR2) | sigmask(SIGCHLD) |
- sigmask(SIGWINCH) | sigmask(SIGFPE);
-#endif
}
diff --git a/src/include/libpq/pqsignal.h b/src/include/libpq/pqsignal.h
index 33642475314025451951b2b0dc488840c78b4577..7ba7e781f7f0ac69bad52dda74918e494b2f0da8 100644 (file)
--- a/src/include/libpq/pqsignal.h
+++ b/src/include/libpq/pqsignal.h
@@ -16,27 +16,24 @@
#include <signal.h>
#ifndef WIN32
-extern sigset_t UnBlockSig,
- BlockSig,
- StartupBlockSig;
-
#define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL)
-#else /* WIN32 */
-/*
- * Windows doesn't provide the POSIX signal API, so we use something
- * approximating the old BSD signal API.
- */
-extern int UnBlockSig,
- BlockSig,
- StartupBlockSig;
+#else
+/* Emulate POSIX sigset_t APIs on Windows */
+typedef int sigset_t;
extern int pqsigsetmask(int mask);
#define PG_SETMASK(mask) pqsigsetmask(*(mask))
+#define sigemptyset(set) (*(set) = 0)
+#define sigfillset(set) (*(set) = ~0)
#define sigaddset(set, signum) (*(set) |= (sigmask(signum)))
#define sigdelset(set, signum) (*(set) &= ~(sigmask(signum)))
#endif /* WIN32 */
+extern sigset_t UnBlockSig,
+ BlockSig,
+ StartupBlockSig;
+
extern void pqinitmask(void);
#endif /* PQSIGNAL_H */
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /