const char * strsignal (int signo) { const char *msg; static char buf[32]; #ifndef HAVE_SYS_SIGLIST if (signal_names == NULL) { init_signal_tables (); } #endif if ((signo < 0) || (signo >= sys_nsig)) { /* Out of range, just return NULL */ msg = NULL; } else if ((sys_siglist == NULL) || (sys_siglist[signo] == NULL)) { /* In range, but no sys_siglist or no entry at this index. */ sprintf (buf, "Signal %d", signo); msg = (const char *) buf; } else { /* In range, and a valid message. Just return the message. */ msg = (const char *) sys_siglist[signo]; } return (msg); }
int strtosigno (const char *name) { int signo = 0; if (name != NULL) { if (signal_names == NULL) { init_signal_tables (); } for (signo = 0; signo < num_signal_names; signo++) { if ((signal_names[signo] != NULL) && (strcmp (name, signal_names[signo]) == 0)) { break; } } if (signo == num_signal_names) { signo = 0; } } return (signo); }
const char * strsigno (int signo) { const char *name; static char buf[32]; if (signal_names == NULL) { init_signal_tables (); } if ((signo < 0) || (signo >= num_signal_names)) { /* Out of range, just return NULL */ name = NULL; } else if ((signal_names == NULL) || (signal_names[signo] == NULL)) { /* In range, but no signal_names or no entry at this index. */ sprintf (buf, "Signal %d", signo); name = (const char *) buf; } else { /* In range, and a valid name. Just return the name. */ name = signal_names[signo]; } return (name); }
int signo_max () { int maxsize; if (signal_names == NULL) { init_signal_tables (); } maxsize = MAX (sys_nsig, num_signal_names); return (maxsize - 1); }
void psignal (int signo, char *message) { if (signal_names == NULL) { init_signal_tables (); } if ((signo <= 0) || (signo >= sys_nsig)) { fprintf (stderr, "%s: unknown signal\n", message); } else { fprintf (stderr, "%s: %s\n", message, sys_siglist[signo]); } }