]> diplodocus.org Git - nmh/blobdiff - sbr/pidstatus.c
Fixed display of header field values with multibyte characters.
[nmh] / sbr / pidstatus.c
index 1c1f734896455c19efe4f827a5a2d3b16e72001d..ded38edc15801a8299a7a5bfce203951430c6b66 100644 (file)
@@ -9,11 +9,6 @@
 
 #include <h/mh.h>
 
-/*
- * auto-generated header
- */
-#include <sigmsg.h>
-
 #ifndef WTERMSIG
 # define WTERMSIG(s) ((int)((s) & 0x7F))
 #endif
@@ -34,6 +29,7 @@ int
 pidstatus (int status, FILE *fp, char *cp)
 {
     int signum;
+    char *signame;
 
 /*
  * I have no idea what this is for (rc)
@@ -51,16 +47,21 @@ pidstatus (int status, FILE *fp, char *cp)
            fprintf (fp, "exit %d\n", signum);
        }
        return signum;
-    } else if (WIFSIGNALED(status)) {
+    }
+
+    if (WIFSIGNALED(status)) {
        /* If child process terminated due to receipt of a signal */
        signum = WTERMSIG(status);
        if (signum != SIGINT) {
            if (cp)
                fprintf (fp, "%s: ", cp);
            fprintf (fp, "signal %d", signum);
-           if (signum >= 0 && signum < (int) sizeof(sigmsg) &&
-                  sigmsg[signum] != NULL)
-               fprintf (fp, " (%s%s)\n", sigmsg[signum],
+           errno = 0;
+           signame = strsignal(signum);
+           if (errno)
+               signame = NULL;
+           if (signame)
+               fprintf (fp, " (%s%s)\n", signame,
                         WCOREDUMP(status) ? ", core dumped" : "");
            else
                fprintf (fp, "%s\n", WCOREDUMP(status) ? " (core dumped)" : "");