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:
committed by
Warner Losh
parent
f942680e8e
commit
36679f7d7b
+8
-32
@@ -48,12 +48,12 @@
|
|||||||
|
|
||||||
static void nosig(const char *);
|
static void nosig(const char *);
|
||||||
static void printsignals(FILE *);
|
static void printsignals(FILE *);
|
||||||
static int signame_to_signum(const char *);
|
|
||||||
static void usage(void) __dead2;
|
static void usage(void) __dead2;
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
char signame[SIG2STR_MAX];
|
||||||
long pidl;
|
long pidl;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
int errors, numsig, ret;
|
int errors, numsig, ret;
|
||||||
@@ -74,12 +74,12 @@ main(int argc, char *argv[])
|
|||||||
usage();
|
usage();
|
||||||
numsig = strtol(*argv, &ep, 10);
|
numsig = strtol(*argv, &ep, 10);
|
||||||
if (!**argv || *ep)
|
if (!**argv || *ep)
|
||||||
errx(2, "illegal signal number: %s", *argv);
|
errx(2, "invalid signal number: %s", *argv);
|
||||||
if (numsig >= 128)
|
if (numsig >= 128)
|
||||||
numsig -= 128;
|
numsig -= 128;
|
||||||
if (numsig <= 0 || numsig >= sys_nsig)
|
if (sig2str(numsig, signame) < 0)
|
||||||
nosig(*argv);
|
nosig(*argv);
|
||||||
printf("%s\n", sys_signame[numsig]);
|
printf("%s\n", signame);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
printsignals(stdout);
|
printsignals(stdout);
|
||||||
@@ -92,24 +92,14 @@ main(int argc, char *argv[])
|
|||||||
warnx("option requires an argument -- s");
|
warnx("option requires an argument -- s");
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
if (strcmp(*argv, "0")) {
|
if (strcmp(*argv, "0") == 0)
|
||||||
if ((numsig = signame_to_signum(*argv)) < 0)
|
|
||||||
nosig(*argv);
|
|
||||||
} else
|
|
||||||
numsig = 0;
|
numsig = 0;
|
||||||
|
else if (str2sig(*argv, &numsig) < 0)
|
||||||
|
nosig(*argv);
|
||||||
argc--, argv++;
|
argc--, argv++;
|
||||||
} else if (**argv == '-' && *(*argv + 1) != '-') {
|
} else if (**argv == '-' && *(*argv + 1) != '-') {
|
||||||
++*argv;
|
++*argv;
|
||||||
if (isalpha(**argv)) {
|
if (str2sig(*argv, &numsig) < 0)
|
||||||
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
|
|
||||||
nosig(*argv);
|
nosig(*argv);
|
||||||
argc--, argv++;
|
argc--, argv++;
|
||||||
}
|
}
|
||||||
@@ -143,20 +133,6 @@ main(int argc, char *argv[])
|
|||||||
return (errors);
|
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
|
static void
|
||||||
nosig(const char *name)
|
nosig(const char *name)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user