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) {