From 77e9eadd9df78d7c26c704392256ad84b79ddd18 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 29 Oct 2020 12:52:11 +0100 Subject: [PATCH] Userland+LibC: Add "kill -l" to show all known signal names/numbers --- Libraries/LibC/signal.cpp | 9 +++++++++ Libraries/LibC/signal.h | 1 + Userland/kill.cpp | 10 ++++++++++ 3 files changed, 20 insertions(+) diff --git a/Libraries/LibC/signal.cpp b/Libraries/LibC/signal.cpp index 327e33de5b5b01..a7a7ede8ba7a54 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 51311691166fbb..65c98603d40ff1 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 76eeb4e891aa18..d1a85376a80fb5 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;