git: 36679f7d7b56 - main - kill: Use POSIX str2sig()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 11 Jun 2025 23:16:43 UTC
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)
{