summaryrefslogtreecommitdiff
path: root/src/port
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2022-11-09 13:05:16 +1300
committerThomas Munro <tmunro@postgresql.org>2022-11-09 13:06:31 +1300
commitb28ac1d24db44ae763a57688e7a559352002badc (patch)
tree670e399144d8747435c2aa2397481d7e074cfdaf /src/port
parent6bbd8b73857a337e3aba2f6cdcaca6355b4c2b51 (diff)
downloadpostgresql-b28ac1d24db44ae763a57688e7a559352002badc.tar.gz
Provide sigaction() for Windows.
Commit 9abb2bfc left behind code to block signals inside signal handlers on Windows, because our signal porting layer didn't have sigaction(). Provide a minimal implementation that is capable of blocking signals, to get rid of platform differences. See also related commit c94ae9d8. Discussion: https://postgr.es/m/CA%2BhUKGKKKfcgx6jzok9AYenp2TNti_tfs8FMoJpL8%2B0Gsy%3D%3D_A%40mail.gmail.com
Diffstat (limited to 'src/port')
-rw-r--r--src/port/pqsignal.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c
index 6cb0320edb..01940ca398 100644
--- a/src/port/pqsignal.c
+++ b/src/port/pqsignal.c
@@ -29,7 +29,9 @@
#include <signal.h>
-#if !defined(WIN32) || defined(FRONTEND)
+#ifndef FRONTEND
+#include "libpq/pqsignal.h"
+#endif
/*
* Set up a signal handler, with SA_RESTART, for signal "signo"
@@ -39,7 +41,7 @@
pqsigfunc
pqsignal(int signo, pqsigfunc func)
{
-#ifndef WIN32
+#if !(defined(WIN32) && defined(FRONTEND))
struct sigaction act,
oact;
@@ -53,9 +55,8 @@ pqsignal(int signo, pqsigfunc func)
if (sigaction(signo, &act, &oact) < 0)
return SIG_ERR;
return oact.sa_handler;
-#else /* WIN32 */
+#else
+ /* Forward to Windows native signal system. */
return signal(signo, func);
#endif
}
-
-#endif /* !defined(WIN32) || defined(FRONTEND) */