toaruos/libc/string/strsignal.c
2022-08-18 19:20:56 +09:00

56 lines
1.7 KiB
C

#include <string.h>
#include <signal.h>
#include <stdio.h>
const char * const sys_siglist[] = {
[SIGHUP] = "Hangup",
[SIGINT] = "Interrupt",
[SIGQUIT] = "Quit",
[SIGILL] = "Illegal instruction",
[SIGTRAP] = "Trace/breakpoint trap",
[SIGABRT] = "Aborted",
[SIGEMT] = "Emulation trap",
[SIGFPE] = "Arithmetic exception",
[SIGKILL] = "Killed",
[SIGBUS] = "Bus error",
[SIGSEGV] = "Segmentation fault",
[SIGSYS] = "Bad system call",
[SIGPIPE] = "Broken pipe",
[SIGALRM] = "Alarm clock",
[SIGTERM] = "Terminated",
[SIGUSR1] = "User defined signal 1",
[SIGUSR2] = "User defined signal 2",
[SIGCHLD] = "Child process status",
[SIGPWR] = "Power failure",
[SIGWINCH] = "Window changed",
[SIGURG] = "Urgent I/O condition",
[SIGPOLL] = "Pollable event",
[SIGSTOP] = "Stopped",
[SIGTSTP] = "Stopped",
[SIGCONT] = "Continued",
[SIGTTIN] = "Stopped (tty input)",
[SIGTTOU] = "Stopped (tty output)",
[SIGTTOUT] = "Stopped (tty output)",
[SIGVTALRM] = "Virtual timer expired",
[SIGPROF] = "Profiling timer expired",
[SIGXCPU] = "CPU time limit exceeded",
[SIGXFSZ] = "File size limit exceeded",
/* silly stuff */
[SIGWAITING] = "Waiting",
[SIGDIAF] = "Died in a fire",
[SIGHATE] = "Hated",
[SIGWINEVENT] = "Window event",
[SIGCAT] = "Meow",
};
char * strsignal(int sig) {
static char _signal_description[256];
if (sig > 0 && sig < NUMSIGNALS) {
snprintf(_signal_description, 256, "%s", sys_siglist[sig]);
} else {
snprintf(_signal_description, 256, "Killed by signal %d", sig);
}
return _signal_description;
}