The branch main has been updated by imp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=36679f7d7b56094744dbad80d5163b9ed9d4c006

commit 36679f7d7b56094744dbad80d5163b9ed9d4c006
Author:     Ricardo Branco <rbra...@suse.de>
AuthorDate: 2025-05-15 16:21:54 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2025-06-11 23:16:22 +0000

    kill: Use POSIX str2sig()
    
    Reviewed by: imp, kib, des, jilles
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1696
---
 bin/kill/kill.c | 40 ++++++++--------------------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

diff --git a/bin/kill/kill.c b/bin/kill/kill.c
index f3d323a1ff49..ca9d557c5883 100644
--- a/bin/kill/kill.c
+++ b/bin/kill/kill.c
@@ -48,12 +48,12 @@
 
 static void nosig(const char *);
 static void printsignals(FILE *);
-static int signame_to_signum(const char *);
 static void usage(void) __dead2;
 
 int
 main(int argc, char *argv[])
 {
+       char signame[SIG2STR_MAX];
        long pidl;
        pid_t pid;
        int errors, numsig, ret;
@@ -74,12 +74,12 @@ main(int argc, char *argv[])
                                usage();
                        numsig = strtol(*argv, &ep, 10);
                        if (!**argv || *ep)
-                               errx(2, "illegal signal number: %s", *argv);
+                               errx(2, "invalid signal number: %s", *argv);
                        if (numsig >= 128)
                                numsig -= 128;
-                       if (numsig <= 0 || numsig >= sys_nsig)
+                       if (sig2str(numsig, signame) < 0)
                                nosig(*argv);
-                       printf("%s\n", sys_signame[numsig]);
+                       printf("%s\n", signame);
                        return (0);
                }
                printsignals(stdout);
@@ -92,24 +92,14 @@ main(int argc, char *argv[])
                        warnx("option requires an argument -- s");
                        usage();
                }
-               if (strcmp(*argv, "0")) {
-                       if ((numsig = signame_to_signum(*argv)) < 0)
-                               nosig(*argv);
-               } else
+               if (strcmp(*argv, "0") == 0)
                        numsig = 0;
+               else if (str2sig(*argv, &numsig) < 0)
+                       nosig(*argv);
                argc--, argv++;
        } else if (**argv == '-' && *(*argv + 1) != '-') {
                ++*argv;
-               if (isalpha(**argv)) {
-                       if ((numsig = signame_to_signum(*argv)) < 0)
-                               nosig(*argv);
-               } else if (isdigit(**argv)) {
-                       numsig = strtol(*argv, &ep, 10);
-                       if (!**argv || *ep)
-                               errx(2, "illegal signal number: %s", *argv);
-                       if (numsig < 0)
-                               nosig(*argv);
-               } else
+               if (str2sig(*argv, &numsig) < 0)
                        nosig(*argv);
                argc--, argv++;
        }
@@ -143,20 +133,6 @@ main(int argc, char *argv[])
        return (errors);
 }
 
-static int
-signame_to_signum(const char *sig)
-{
-       int n;
-
-       if (strncasecmp(sig, "SIG", 3) == 0)
-               sig += 3;
-       for (n = 1; n < sys_nsig; n++) {
-               if (!strcasecmp(sys_signame[n], sig))
-                       return (n);
-       }
-       return (-1);
-}
-
 static void
 nosig(const char *name)
 {

Reply via email to