diff options
Diffstat (limited to 'shell/ash.c')
-rw-r--r-- | shell/ash.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/shell/ash.c b/shell/ash.c index ba99381a2..de8d06e90 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -2035,7 +2035,6 @@ static void onsig(int); | |||
2035 | static int dotrap(void); | 2035 | static int dotrap(void); |
2036 | static void setinteractive(int); | 2036 | static void setinteractive(int); |
2037 | static void exitshell(void) ATTRIBUTE_NORETURN; | 2037 | static void exitshell(void) ATTRIBUTE_NORETURN; |
2038 | static int decode_signal(const char *, int); | ||
2039 | 2038 | ||
2040 | /* | 2039 | /* |
2041 | * This routine is called when an error or an interrupt occurs in an | 2040 | * This routine is called when an error or an interrupt occurs in an |
@@ -6548,7 +6547,7 @@ usage: | |||
6548 | } | 6547 | } |
6549 | 6548 | ||
6550 | if (**++argv == '-') { | 6549 | if (**++argv == '-') { |
6551 | signo = decode_signal(*argv + 1, 1); | 6550 | signo = get_signum(*argv + 1); |
6552 | if (signo < 0) { | 6551 | if (signo < 0) { |
6553 | int c; | 6552 | int c; |
6554 | 6553 | ||
@@ -6562,7 +6561,7 @@ usage: | |||
6562 | list = 1; | 6561 | list = 1; |
6563 | break; | 6562 | break; |
6564 | case 's': | 6563 | case 's': |
6565 | signo = decode_signal(optionarg, 1); | 6564 | signo = get_signum(optionarg); |
6566 | if (signo < 0) { | 6565 | if (signo < 0) { |
6567 | sh_error( | 6566 | sh_error( |
6568 | "invalid signal number or name: %s", | 6567 | "invalid signal number or name: %s", |
@@ -6588,14 +6587,14 @@ usage: | |||
6588 | 6587 | ||
6589 | if (!*argv) { | 6588 | if (!*argv) { |
6590 | for (i = 1; i < NSIG; i++) { | 6589 | for (i = 1; i < NSIG; i++) { |
6591 | name = u_signal_names(0, &i, 1); | 6590 | name = get_signame(i); |
6592 | if (name) | 6591 | if (isdigit(*name)) |
6593 | out1fmt(snlfmt, name); | 6592 | out1fmt(snlfmt, name); |
6594 | } | 6593 | } |
6595 | return 0; | 6594 | return 0; |
6596 | } | 6595 | } |
6597 | name = u_signal_names(*argptr, &signo, -1); | 6596 | name = get_signame(signo); |
6598 | if (name) | 6597 | if (isdigit(*name)) |
6599 | out1fmt(snlfmt, name); | 6598 | out1fmt(snlfmt, name); |
6600 | else | 6599 | else |
6601 | sh_error("invalid signal number or exit status: %s", *argptr); | 6600 | sh_error("invalid signal number or exit status: %s", *argptr); |
@@ -11617,9 +11616,7 @@ trapcmd(int argc, char **argv) | |||
11617 | if (trap[signo] != NULL) { | 11616 | if (trap[signo] != NULL) { |
11618 | const char *sn; | 11617 | const char *sn; |
11619 | 11618 | ||
11620 | sn = u_signal_names(0, &signo, 0); | 11619 | sn = get_signame(signo); |
11621 | if (sn == NULL) | ||
11622 | sn = "???"; | ||
11623 | out1fmt("trap -- %s %s\n", | 11620 | out1fmt("trap -- %s %s\n", |
11624 | single_quote(trap[signo]), sn); | 11621 | single_quote(trap[signo]), sn); |
11625 | } | 11622 | } |
@@ -11631,7 +11628,7 @@ trapcmd(int argc, char **argv) | |||
11631 | else | 11628 | else |
11632 | action = *ap++; | 11629 | action = *ap++; |
11633 | while (*ap) { | 11630 | while (*ap) { |
11634 | if ((signo = decode_signal(*ap, 0)) < 0) | 11631 | if ((signo = get_signum(*ap)) < 0) |
11635 | sh_error("%s: bad trap", *ap); | 11632 | sh_error("%s: bad trap", *ap); |
11636 | INTOFF; | 11633 | INTOFF; |
11637 | if (action) { | 11634 | if (action) { |
@@ -11934,14 +11931,6 @@ out: | |||
11934 | /* NOTREACHED */ | 11931 | /* NOTREACHED */ |
11935 | } | 11932 | } |
11936 | 11933 | ||
11937 | static int decode_signal(const char *string, int minsig) | ||
11938 | { | ||
11939 | int signo; | ||
11940 | const char *name = u_signal_names(string, &signo, minsig); | ||
11941 | |||
11942 | return name ? signo : -1; | ||
11943 | } | ||
11944 | |||
11945 | /* var.c */ | 11934 | /* var.c */ |
11946 | 11935 | ||
11947 | static struct var *vartab[VTABSIZE]; | 11936 | static struct var *vartab[VTABSIZE]; |