Make sys_signame upper case.

This matches the constants from <signal.h> with 'SIG' removed, which POSIX
requires kill and trap to accept and 'kill -l' to write.

'kill -l', 'trap', 'trap -l' output is now upper case.

In Turkish locales, signal names with an upper case 'I' are now accepted,
while signal names with a lower case 'i' are no longer accepted, and the
output of 'killall -l' now contains proper capital 'I' without dot instead
of a dotted capital 'I'.
This commit is contained in:
jilles 2011-02-04 16:40:50 +00:00
parent 3060e03b87
commit dbecc33067
7 changed files with 40 additions and 40 deletions

View File

@ -152,7 +152,7 @@ signame_to_signum(const char *sig)
{ {
int n; int n;
if (!strncasecmp(sig, "sig", (size_t)3)) if (!strncasecmp(sig, "SIG", (size_t)3))
sig += 3; sig += 3;
for (n = 1; n < sys_nsig; n++) { for (n = 1; n < sys_nsig; n++) {
if (!strcasecmp(sys_signame[n], sig)) if (!strcasecmp(sys_signame[n], sig))

View File

@ -156,7 +156,7 @@ main(int argc, char **argv)
argv++; argv++;
argc--; argc--;
} else { } else {
if (strncasecmp(p, "sig", 3) == 0) if (strncasecmp(p, "SIG", 3) == 0)
p += 3; p += 3;
for (i = 1; i < NSIG; i++) for (i = 1; i < NSIG; i++)
if (strcasecmp(sys_signame[i], p) == 0) if (strcasecmp(sys_signame[i], p) == 0)

View File

@ -101,12 +101,12 @@ sigstring_to_signum(char *sig)
signo = atoi(sig); signo = atoi(sig);
return ((signo >= 0 && signo < NSIG) ? signo : (-1)); return ((signo >= 0 && signo < NSIG) ? signo : (-1));
} else if (strcasecmp(sig, "exit") == 0) { } else if (strcasecmp(sig, "EXIT") == 0) {
return (0); return (0);
} else { } else {
int n; int n;
if (strncasecmp(sig, "sig", 3) == 0) if (strncasecmp(sig, "SIG", 3) == 0)
sig += 3; sig += 3;
for (n = 1; n < sys_nsig; n++) for (n = 1; n < sys_nsig; n++)
if (sys_signame[n] && if (sys_signame[n] &&
@ -171,7 +171,7 @@ trapcmd(int argc, char **argv)
out1str("trap -- "); out1str("trap -- ");
out1qstr(trap[signo]); out1qstr(trap[signo]);
if (signo == 0) { if (signo == 0) {
out1str(" exit\n"); out1str(" EXIT\n");
} else if (sys_signame[signo]) { } else if (sys_signame[signo]) {
out1fmt(" %s\n", sys_signame[signo]); out1fmt(" %s\n", sys_signame[signo]);
} else { } else {

View File

@ -28,7 +28,7 @@
.\" @(#)psignal.3 8.2 (Berkeley) 2/27/95 .\" @(#)psignal.3 8.2 (Berkeley) 2/27/95
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd February 27, 1995 .Dd February 4, 2011
.Dt PSIGNAL 3 .Dt PSIGNAL 3
.Os .Os
.Sh NAME .Sh NAME
@ -89,7 +89,7 @@ indexed by recognized signal numbers.
The external array The external array
.Va sys_signame .Va sys_signame
is used similarly and is used similarly and
contains short, lower-case abbreviations for signals contains short, upper-case abbreviations for signals
which are useful for recognizing signal names which are useful for recognizing signal names
in user input. in user input.
The defined variable The defined variable

View File

@ -37,37 +37,37 @@ __FBSDID("$FreeBSD$");
const char *const sys_signame[NSIG] = { const char *const sys_signame[NSIG] = {
"Signal 0", "Signal 0",
"hup", /* SIGHUP */ "HUP", /* SIGHUP */
"int", /* SIGINT */ "INT", /* SIGINT */
"quit", /* SIGQUIT */ "QUIT", /* SIGQUIT */
"ill", /* SIGILL */ "ILL", /* SIGILL */
"trap", /* SIGTRAP */ "TRAP", /* SIGTRAP */
"abrt", /* SIGABRT */ "ABRT", /* SIGABRT */
"emt", /* SIGEMT */ "EMT", /* SIGEMT */
"fpe", /* SIGFPE */ "FPE", /* SIGFPE */
"kill", /* SIGKILL */ "KILL", /* SIGKILL */
"bus", /* SIGBUS */ "BUS", /* SIGBUS */
"segv", /* SIGSEGV */ "SEGV", /* SIGSEGV */
"sys", /* SIGSYS */ "SYS", /* SIGSYS */
"pipe", /* SIGPIPE */ "PIPE", /* SIGPIPE */
"alrm", /* SIGALRM */ "ALRM", /* SIGALRM */
"term", /* SIGTERM */ "TERM", /* SIGTERM */
"urg", /* SIGURG */ "URG", /* SIGURG */
"stop", /* SIGSTOP */ "STOP", /* SIGSTOP */
"tstp", /* SIGTSTP */ "TSTP", /* SIGTSTP */
"cont", /* SIGCONT */ "CONT", /* SIGCONT */
"chld", /* SIGCHLD */ "CHLD", /* SIGCHLD */
"ttin", /* SIGTTIN */ "TTIN", /* SIGTTIN */
"ttou", /* SIGTTOU */ "TTOU", /* SIGTTOU */
"io", /* SIGIO */ "IO", /* SIGIO */
"xcpu", /* SIGXCPU */ "XCPU", /* SIGXCPU */
"xfsz", /* SIGXFSZ */ "XFSZ", /* SIGXFSZ */
"vtalrm", /* SIGVTALRM */ "VTALRM", /* SIGVTALRM */
"prof", /* SIGPROF */ "PROF", /* SIGPROF */
"winch", /* SIGWINCH */ "WINCH", /* SIGWINCH */
"info", /* SIGINFO */ "INFO", /* SIGINFO */
"usr1", /* SIGUSR1 */ "USR1", /* SIGUSR1 */
"usr2" /* SIGUSR2 */ "USR2" /* SIGUSR2 */
}; };
const char *const sys_siglist[NSIG] = { const char *const sys_siglist[NSIG] = {

View File

@ -218,7 +218,7 @@ main(int ac, char **av)
break; break;
default: default:
if (isalpha((unsigned char)**av)) { if (isalpha((unsigned char)**av)) {
if (strncasecmp(*av, "sig", 3) == 0) if (strncasecmp(*av, "SIG", 3) == 0)
*av += 3; *av += 3;
for (sig = NSIG, p = sys_signame + 1; for (sig = NSIG, p = sys_signame + 1;
--sig; ++p) --sig; ++p)

View File

@ -155,7 +155,7 @@ strsig(int sig)
ret = NULL; ret = NULL;
if (sig > 0 && sig < NSIG) { if (sig > 0 && sig < NSIG) {
int i; int i;
asprintf(&ret, "sig%s", sys_signame[sig]); asprintf(&ret, "SIG%s", sys_signame[sig]);
if (ret == NULL) if (ret == NULL)
return (NULL); return (NULL);
for (i = 0; ret[i] != '\0'; ++i) for (i = 0; ret[i] != '\0'; ++i)