chiark / gitweb /
util: rename signal_from_string_try_harder() to signal_from_string()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 3 May 2018 07:38:57 +0000 (16:38 +0900)
committerSven Eden <yamakuzure@gmx.net>
Fri, 24 Aug 2018 14:47:08 +0000 (16:47 +0200)
Also this makes the new `signal_from_string()` function reject
e.g, `SIG3` or `SIG+5`.

src/basic/signal-util.c

index bf4816fd6d938f599a5d316a7bd849a662b42cd2..5bd5c71ceb700464b786ed9df682147e739b3c8e 100644 (file)
@@ -234,11 +234,7 @@ int signal_from_string(const char *s) {
         const char *p;
         int signo, r;
 
-        /* Check that the input is a signal name. */
-        signo = __signal_from_string(s);
-        if (signo > 0)
-                return signo;
-
+        /* Check that the input is a signal number. */
         if (safe_atoi(s, &signo) >= 0) {
                 if (SIGNAL_VALID(signo))
                         return signo;
@@ -246,6 +242,15 @@ int signal_from_string(const char *s) {
                         return -ERANGE;
         }
 
+        /* Drop "SIG" prefix. */
+        if (startswith(s, "SIG"))
+                s += 3;
+
+        /* Check that the input is a signal name. */
+        signo = __signal_from_string(s);
+        if (signo > 0)
+                return signo;
+
         /* Check that the input is RTMIN or
          * RTMIN+n (0 <= n <= SIGRTMAX-SIGRTMIN). */
         p = startswith(s, "RTMIN");
@@ -287,17 +292,6 @@ int signal_from_string(const char *s) {
         return -EINVAL;
 }
 
-int signal_from_string_try_harder(const char *s) {
-        int signo;
-        assert(s);
-
-        signo = signal_from_string(s);
-        if (signo <= 0)
-                if (startswith(s, "SIG"))
-                        return signal_from_string(s+3);
-
-        return signo;
-}
 
 #if 0 /// UNNEEDED by elogind
 void nop_signal_handler(int sig) {