PostgreSQL Source Code git master
pgstrsignal.c
Go to the documentation of this file.
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-2025, 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 */
38const char *
39pg_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 result = strsignal(signum);
48 if (result == NULL)
49 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 return result;
61}
const char * pg_strsignal(int signum)
Definition: pgstrsignal.c:39