version 1.3, 2021/09/01 16:04:40 |
version 1.4, 2021/09/01 16:09:54 |
|
|
static int |
static int |
parse_signal(const char *str) |
parse_signal(const char *str) |
{ |
{ |
char *ep; |
char *ep; |
int i; |
int i; |
long sig; |
long sig; |
|
const char *errstr; |
|
|
if (strncasecmp(str, "SIG", 3) == 0) { |
if (strncasecmp(str, "SIG", 3) == 0) { |
str += 3; |
str += 3; |
|
|
} |
} |
|
|
errno = 0; |
errno = 0; |
sig = strtol(str, &ep, 10); |
sig = strtonum(str, LONG_MIN, LONG_MAX, &errstr); |
|
if (errstr != NULL) |
if (str[0] == '\0' || *ep != '\0') |
|
goto err; |
|
if (errno == ERANGE && (sig == LONG_MAX || sig == LONG_MIN)) |
|
goto err; |
goto err; |
if (sig >= NSIG || sig < 0) |
if (sig >= NSIG || sig < 0) |
goto err; |
goto err; |