]> granicus.if.org Git - postgresql/commitdiff
Improve what pg_strsignal prints if we haven't got strsignal(3).
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Aug 2019 21:24:13 +0000 (17:24 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Aug 2019 21:24:30 +0000 (17:24 -0400)
Turns out that returning "unrecognized signal" is confusing.
Make it explicit that the platform lacks any support for signal names.
(At least of the machines in the buildfarm, only HPUX lacks it.)

Back-patch to v12 where we invented this function.

Discussion: https://postgr.es/m/3067.1566870481@sss.pgh.pa.us

src/port/pgstrsignal.c

index 146ff0a21eaa2a775b6f77d4491709e754a01696..93c6ef97ecff2918827cceeeee1801027f6db042 100644 (file)
  *
  * This version guarantees to return a non-NULL pointer, although
  * some platforms' versions of strsignal() reputedly do not.
+ *
+ * Note that the fallback cases just return constant strings such as
+ * "unrecognized signal".  Project style is for callers to print the
+ * numeric signal value along with the result of this function, so
+ * there's no need to work harder than that.
  */
 const char *
 pg_strsignal(int signum)
@@ -43,8 +48,8 @@ pg_strsignal(int signum)
         */
 #ifdef HAVE_STRSIGNAL
        result = strsignal(signum);
-       if (result)
-               return result;
+       if (result == NULL)
+               result = "unrecognized signal";
 #else
 
        /*
@@ -52,13 +57,8 @@ pg_strsignal(int signum)
         * However, it seems that all platforms with sys_siglist[] have also had
         * strsignal() for many years now, so that was just a waste of code.
         */
+       result = "(signal names not available on this platform)";
 #endif
 
-       /*
-        * Fallback case: just return "unrecognized signal".  Project style is for
-        * callers to print the numeric signal value along with the result of this
-        * function, so there's no need to work harder than this.
-        */
-       result = "unrecognized signal";
        return result;
 }