aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c27
-rw-r--r--shell/lash.c31
-rw-r--r--shell/msh.c41
3 files changed, 9 insertions, 90 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);
2035static int dotrap(void); 2035static int dotrap(void);
2036static void setinteractive(int); 2036static void setinteractive(int);
2037static void exitshell(void) ATTRIBUTE_NORETURN; 2037static void exitshell(void) ATTRIBUTE_NORETURN;
2038static 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
11937static 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
11947static struct var *vartab[VTABSIZE]; 11936static struct var *vartab[VTABSIZE];
diff --git a/shell/lash.c b/shell/lash.c
index c5aaf1d1f..92c24d1c2 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -22,18 +22,7 @@
22 22
23 23
24#include "busybox.h" 24#include "busybox.h"
25#include <stdio.h>
26#include <stdlib.h>
27#include <ctype.h>
28#include <errno.h>
29#include <fcntl.h>
30#include <signal.h>
31#include <string.h>
32#include <sys/ioctl.h>
33#include <sys/wait.h>
34#include <unistd.h>
35#include <getopt.h> 25#include <getopt.h>
36#include <termios.h>
37#include "cmdedit.h" 26#include "cmdedit.h"
38 27
39#ifdef CONFIG_LOCALE_SUPPORT 28#ifdef CONFIG_LOCALE_SUPPORT
@@ -697,26 +686,6 @@ static int get_command(FILE * source, char *command)
697 return 0; 686 return 0;
698} 687}
699 688
700static char* itoa(int i)
701{
702 static char a[7]; /* Max 7 ints */
703 char *b = a + sizeof(a) - 1;
704 int sign = (i < 0);
705
706 if (sign)
707 i = -i;
708 *b = 0;
709 do
710 {
711 *--b = '0' + (i % 10);
712 i /= 10;
713 }
714 while (i);
715 if (sign)
716 *--b = '-';
717 return b;
718}
719
720static char * strsep_space( char *string, int * ix) 689static char * strsep_space( char *string, int * ix)
721{ 690{
722 char *token; 691 char *token;
diff --git a/shell/msh.c b/shell/msh.c
index 633070112..b491a08a4 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -10,41 +10,12 @@
10 * Robert Schwebel <r.schwebel@pengutronix.de> 10 * Robert Schwebel <r.schwebel@pengutronix.de>
11 * Erik Andersen <andersen@codepoet.org> 11 * Erik Andersen <andersen@codepoet.org>
12 * 12 *
13 * This program is free software; you can redistribute it and/or modify 13 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 *
27 * Original copyright notice is retained at the end of this file.
28 */ 14 */
29 15
30#include "busybox.h" 16#include "busybox.h"
31#include <ctype.h>
32#include <dirent.h>
33#include <errno.h>
34#include <fcntl.h>
35#include <limits.h>
36#include <setjmp.h> 17#include <setjmp.h>
37#include <signal.h>
38#include <stddef.h>
39#include <stdio.h>
40#include <stdlib.h>
41#include <string.h>
42#include <time.h>
43#include <unistd.h>
44#include <sys/stat.h>
45#include <sys/times.h> 18#include <sys/times.h>
46#include <sys/types.h>
47#include <sys/wait.h>
48 19
49#include "cmdedit.h" 20#include "cmdedit.h"
50 21
@@ -293,7 +264,6 @@ static char *space(int n);
293static char *strsave(char *s, int a); 264static char *strsave(char *s, int a);
294static char *evalstr(char *cp, int f); 265static char *evalstr(char *cp, int f);
295static char *putn(int n); 266static char *putn(int n);
296static char *itoa(int n);
297static char *unquote(char *as); 267static char *unquote(char *as);
298static struct var *lookup(char *n); 268static struct var *lookup(char *n);
299static int rlookup(char *n); 269static int rlookup(char *n);
@@ -1252,15 +1222,6 @@ static char *putn(int n)
1252 return (itoa(n)); 1222 return (itoa(n));
1253} 1223}
1254 1224
1255static char *itoa(int n)
1256{
1257 static char s[20];
1258
1259 snprintf(s, sizeof(s), "%u", n);
1260 return (s);
1261}
1262
1263
1264static void next(int f) 1225static void next(int f)
1265{ 1226{
1266 PUSHIO(afile, f, filechar); 1227 PUSHIO(afile, f, filechar);