Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jun 2025 23:16:43 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 36679f7d7b56 - main - kill: Use POSIX str2sig()
Message-ID:  <202506112316.55BNGhxp046314@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by imp:

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

commit 36679f7d7b56094744dbad80d5163b9ed9d4c006
Author:     Ricardo Branco <rbranco@suse.de>
AuthorDate: 2025-05-15 16:21:54 +0000
Commit:     Warner Losh <imp@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)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506112316.55BNGhxp046314>