浏览代码

LibC: Move getsignalbyname() helper from Userland/kill into LibC

Andreas Kling 4 年之前
父节点
当前提交
ad0295d033
共有 3 个文件被更改,包括 51 次插入49 次删除
  1. 50 0
      Libraries/LibC/signal.cpp
  2. 1 0
      Libraries/LibC/signal.h
  3. 0 49
      Userland/kill.cpp

+ 50 - 0
Libraries/LibC/signal.cpp

@@ -30,6 +30,7 @@
 #include <setjmp.h>
 #include <signal.h>
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 
 extern "C" {
@@ -186,4 +187,53 @@ int sigsuspend(const sigset_t*)
     dbgprintf("FIXME: Implement sigsuspend()\n");
     ASSERT_NOT_REACHED();
 }
+
+static const char* signal_names[] = {
+    "INVAL",
+    "HUP",
+    "INT",
+    "QUIT",
+    "ILL",
+    "TRAP",
+    "ABRT",
+    "BUS",
+    "FPE",
+    "KILL",
+    "USR1",
+    "SEGV",
+    "USR2",
+    "PIPE",
+    "ALRM",
+    "TERM",
+    "STKFLT",
+    "CHLD",
+    "CONT",
+    "STOP",
+    "TSTP",
+    "TTIN",
+    "TTOU",
+    "URG",
+    "XCPU",
+    "XFSZ",
+    "VTALRM",
+    "PROF",
+    "WINCH",
+    "IO",
+    "INFO",
+    "SYS",
+};
+
+static_assert(sizeof(signal_names) == sizeof(const char*) * 32);
+
+int getsignalbyname(const char* name)
+{
+    ASSERT(name);
+    for (size_t i = 0; i < NSIG; ++i) {
+        auto* signal_name = signal_names[i];
+        if (!strcmp(signal_name, name))
+            return i;
+    }
+    errno = EINVAL;
+    return -1;
+}
 }

+ 1 - 0
Libraries/LibC/signal.h

@@ -75,6 +75,7 @@ int sigprocmask(int how, const sigset_t* set, sigset_t* old_set);
 int sigpending(sigset_t*);
 int sigsuspend(const sigset_t*);
 int raise(int sig);
+int getsignalbyname(const char*);
 
 extern const char* sys_siglist[NSIG];
 

+ 0 - 49
Userland/kill.cpp

@@ -39,55 +39,6 @@ static void print_usage_and_exit()
     exit(1);
 }
 
-static const char* signal_names[] = {
-    "INVAL",
-    "HUP",
-    "INT",
-    "QUIT",
-    "ILL",
-    "TRAP",
-    "ABRT",
-    "BUS",
-    "FPE",
-    "KILL",
-    "USR1",
-    "SEGV",
-    "USR2",
-    "PIPE",
-    "ALRM",
-    "TERM",
-    "STKFLT",
-    "CHLD",
-    "CONT",
-    "STOP",
-    "TSTP",
-    "TTIN",
-    "TTOU",
-    "URG",
-    "XCPU",
-    "XFSZ",
-    "VTALRM",
-    "PROF",
-    "WINCH",
-    "IO",
-    "INFO",
-    "SYS"
-};
-
-static_assert(sizeof(signal_names) == sizeof(const char*) * 32);
-
-int getsignalbyname(const char* name)
-{
-    ASSERT(name);
-    for (size_t i = 0; i < NSIG; ++i) {
-        auto* signal_name = signal_names[i];
-        if (!strcmp(signal_name, name))
-            return i;
-    }
-    errno = EINVAL;
-    return -1;
-}
-
 int main(int argc, char** argv)
 {
     if (pledge("stdio proc", nullptr) < 0) {