diff --git a/Libraries/LibC/signal.cpp b/Libraries/LibC/signal.cpp index 327e33de5b..a7a7ede8ba 100644 --- a/Libraries/LibC/signal.cpp +++ b/Libraries/LibC/signal.cpp @@ -236,4 +236,13 @@ int getsignalbyname(const char* name) errno = EINVAL; return -1; } + +const char* getsignalname(int signal) +{ + if (signal < 0 || signal >= NSIG) { + errno = EINVAL; + return nullptr; + } + return signal_names[signal]; +} } diff --git a/Libraries/LibC/signal.h b/Libraries/LibC/signal.h index 5131169116..65c98603d4 100644 --- a/Libraries/LibC/signal.h +++ b/Libraries/LibC/signal.h @@ -76,6 +76,7 @@ int sigpending(sigset_t*); int sigsuspend(const sigset_t*); int raise(int sig); int getsignalbyname(const char*); +const char* getsignalname(int); extern const char* sys_siglist[NSIG]; diff --git a/Userland/kill.cpp b/Userland/kill.cpp index 76eeb4e891..d1a85376a8 100644 --- a/Userland/kill.cpp +++ b/Userland/kill.cpp @@ -46,6 +46,16 @@ int main(int argc, char** argv) return 1; } + if (argc == 2 && !strcmp(argv[1], "-l")) { + for (size_t i = 0; i < NSIG; ++i) { + if (i && !(i % 5)) + outln(""); + new_out("{:2}) {:10}", i, getsignalname(i)); + } + outln(""); + return 0; + } + if (argc != 2 && argc != 3) print_usage_and_exit(); unsigned signum = SIGTERM;