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
src/basic/signal-util.h
src/login/loginctl.c
src/shared/conf-parser.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) {
index daf8f404d858566d2534b6f1ee038394f1741daa..a52b1d2fafe6c1bc7ae24bef3a4d7e5c70c8bb53 100644 (file)
@@ -26,9 +26,7 @@ int sigprocmask_many(int how, sigset_t *old, ...);
 const char *signal_to_string(int i) _const_;
 int signal_from_string(const char *s) _pure_;
 
-int signal_from_string_try_harder(const char *s);
 #if 0 /// UNNEEDED by elogind
-
 void nop_signal_handler(int sig);
 #endif // 0
 
index 0c984f9eb21be3aec43ae856967265812506d8f3..9badf8e6837c1df7788dc884de2eb219ed107c82 100644 (file)
@@ -1546,7 +1546,7 @@ static int parse_argv(int argc, char *argv[]) {
                         break;
 
                 case 's':
-                        arg_signal = signal_from_string_try_harder(optarg);
+                        arg_signal = signal_from_string(optarg);
                         if (arg_signal < 0) {
                                 log_error("Failed to parse signal string %s.", optarg);
                                 return -EINVAL;
index 6c3dda5aea428e7c14ee698daf4666be9800d572..704c75c3adfad1acdf6aec9ae0d1126a370d6ef7 100644 (file)
@@ -943,7 +943,7 @@ int config_parse_signal(
         assert(rvalue);
         assert(sig);
 
-        r = signal_from_string_try_harder(rvalue);
+        r = signal_from_string(rvalue);
         if (r <= 0) {
                 log_syntax(unit, LOG_ERR, filename, line, 0, "Failed to parse signal name, ignoring: %s", rvalue);
                 return 0;