PostgreSQL Source Code
git master
Loading...
Searching...
No Matches
legacy-pqsignal.c
Go to the documentation of this file.
1
/*-------------------------------------------------------------------------
2
*
3
* legacy-pqsignal.c
4
* reliable BSD-style signal(2) routine stolen from RWW who stole it
5
* from Stevens...
6
*
7
* Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
8
* Portions Copyright (c) 1994, Regents of the University of California
9
*
10
*
11
* IDENTIFICATION
12
* src/interfaces/libpq/legacy-pqsignal.c
13
*
14
*-------------------------------------------------------------------------
15
*/
16
#include "
postgres_fe.h
"
17
18
#include <signal.h>
19
20
21
/*
22
* This version of pqsignal() exists only because pre-9.3 releases
23
* of libpq exported pqsignal(), and some old client programs still
24
* depend on that. (Since 9.3, clients are supposed to get it from
25
* libpgport instead.)
26
*
27
* Because it is only intended for backwards compatibility, we freeze it
28
* with the semantics it had in 9.2; in particular, this has different
29
* behavior for SIGALRM than the version in src/port/pqsignal.c.
30
*
31
* libpq itself does not use this, nor does anything else in our code.
32
*
33
* src/include/port.h #define's pqsignal as pqsignal_fe or pqsignal_be,
34
* but here we want to export just plain "pqsignal". We can't rely on
35
* port.h's extern declaration either. (The point of those #define's
36
* is to ensure that no in-tree code accidentally calls this version.)
37
*/
38
#undef pqsignal
39
extern
pqsigfunc
pqsignal
(
int
signo
,
pqsigfunc
func);
40
41
pqsigfunc
42
pqsignal
(
int
signo
,
pqsigfunc
func)
43
{
44
#ifndef WIN32
45
struct
sigaction
act
,
46
oact
;
47
48
act
.sa_handler = func;
49
sigemptyset
(&
act
.sa_mask);
50
act
.sa_flags = 0;
51
if
(
signo
!=
SIGALRM
)
52
act
.sa_flags |=
SA_RESTART
;
53
#ifdef SA_NOCLDSTOP
54
if
(
signo
==
SIGCHLD
)
55
act
.sa_flags |=
SA_NOCLDSTOP
;
56
#endif
57
if
(
sigaction
(
signo
, &
act
, &
oact
) < 0)
58
return
SIG_ERR
;
59
return
oact
.sa_handler;
60
#else
/* WIN32 */
61
return
signal
(
signo
, func);
62
#endif
63
}
pqsignal
#define pqsignal
Definition
port.h:547
pqsigfunc
void(* pqsigfunc)(SIGNAL_ARGS)
Definition
port.h:549
postgres_fe.h
fb
static int fb(int x)
Definition
preproc-init.c:92
SIGCHLD
#define SIGCHLD
Definition
win32_port.h:168
SIGALRM
#define SIGALRM
Definition
win32_port.h:164
src
interfaces
libpq
legacy-pqsignal.c
Generated on Mon Feb 9 2026 00:13:18 for PostgreSQL Source Code by
1.9.8