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-2024, 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 10 : 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 10 : result = strsignal(signum); 48 10 : 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 10 : return result; 61 : }