kill: Use POSIX str2sig()

Reviewed by: imp, kib, des, jilles
Pull Request: https://github.com/freebsd/freebsd-src/pull/1696
This commit is contained in:
Ricardo Branco 2025-05-15 18:21:54 +02:00 committed by Warner Losh
parent f942680e8e
commit 36679f7d7b

View file

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