aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/port.h7
-rw-r--r--src/interfaces/libpq/legacy-pqsignal.c10
-rw-r--r--src/port/pqsignal.c4
3 files changed, 19 insertions, 2 deletions
diff --git a/src/include/port.h b/src/include/port.h
index 818b7c7baef..f0e28ce5c53 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -513,7 +513,12 @@ extern int pg_check_dir(const char *dir);
/* port/pgmkdirp.c */
extern int pg_mkdir_p(char *path, int omode);
-/* port/pqsignal.c */
+/* port/pqsignal.c (see also interfaces/libpq/legacy-pqsignal.c) */
+#ifdef FRONTEND
+#define pqsignal pqsignal_fe
+#else
+#define pqsignal pqsignal_be
+#endif
typedef void (*pqsigfunc) (SIGNAL_ARGS);
extern pqsigfunc pqsignal(int signo, pqsigfunc func);
diff --git a/src/interfaces/libpq/legacy-pqsignal.c b/src/interfaces/libpq/legacy-pqsignal.c
index 08648885623..ebd1695bf07 100644
--- a/src/interfaces/libpq/legacy-pqsignal.c
+++ b/src/interfaces/libpq/legacy-pqsignal.c
@@ -28,8 +28,16 @@
* with the semantics it had in 9.2; in particular, this has different
* behavior for SIGALRM than the version in src/port/pqsignal.c.
*
- * libpq itself does not use this.
+ * libpq itself does not use this, nor does anything else in our code.
+ *
+ * src/include/port.h #define's pqsignal as pqsignal_fe or pqsignal_be,
+ * but here we want to export just plain "pqsignal". We can't rely on
+ * port.h's extern declaration either. (The point of those #define's
+ * is to ensure that no in-tree code accidentally calls this version.)
*/
+#undef pqsignal
+extern pqsigfunc pqsignal(int signo, pqsigfunc func);
+
pqsigfunc
pqsignal(int signo, pqsigfunc func)
{
diff --git a/src/port/pqsignal.c b/src/port/pqsignal.c
index d328a27279d..1169de6b81e 100644
--- a/src/port/pqsignal.c
+++ b/src/port/pqsignal.c
@@ -123,6 +123,10 @@ wrapper_handler(SIGNAL_ARGS)
* function instead of providing potentially-bogus return values.
* Unfortunately, that requires modifying the pqsignal() in legacy-pqsignal.c,
* which in turn requires an SONAME bump, which is probably not worth it.
+ *
+ * Note: the actual name of this function is either pqsignal_fe when
+ * compiled with -DFRONTEND, or pqsignal_be when compiled without that.
+ * This is to avoid a name collision with libpq's legacy-pqsignal.c.
*/
pqsigfunc
pqsignal(int signo, pqsigfunc func)