Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * pgstrsignal.c
4 : * Identify a Unix signal number
5 : *
6 : * On platforms compliant with modern POSIX, this just wraps strsignal(3).
7 : * Elsewhere, we do the best we can.
8 : *
9 : * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
10 : * Portions Copyright (c) 1994, Regents of the University of California
11 : *
12 : * IDENTIFICATION
13 : * src/port/pgstrsignal.c
14 : *
15 : *-------------------------------------------------------------------------
16 : */
17 :
18 : #include "c.h"
19 :
20 :
21 : /*
22 : * pg_strsignal
23 : *
24 : * Return a string identifying the given Unix signal number.
25 : *
26 : * The result is declared "const char *" because callers should not
27 : * modify the string. Note, however, that POSIX does not promise that
28 : * the string will remain valid across later calls to strsignal().
29 : *
30 : * This version guarantees to return a non-NULL pointer, although
31 : * some platforms' versions of strsignal() reputedly do not.
32 : *
33 : * Note that the fallback cases just return constant strings such as
34 : * "unrecognized signal". Project style is for callers to print the
35 : * numeric signal value along with the result of this function, so
36 : * there's no need to work harder than that.
37 : */
38 : const char *
39 4 : pg_strsignal(int signum)
40 : {
41 : const char *result;
42 :
43 : /*
44 : * If we have strsignal(3), use that --- but check its result for NULL.
45 : */
46 : #ifdef HAVE_STRSIGNAL
47 4 : result = strsignal(signum);
48 4 : if (result == NULL)
49 0 : result = "unrecognized signal";
50 : #else
51 :
52 : /*
53 : * We used to have code here to try to use sys_siglist[] if available.
54 : * However, it seems that all platforms with sys_siglist[] have also had
55 : * strsignal() for many years now, so that was just a waste of code.
56 : */
57 : result = "(signal names not available on this platform)";
58 : #endif
59 :
60 4 : return result;
61 : }
|