From 7d4c44e1b102c0fb72603d96278bfa8e7aef73bc Mon Sep 17 00:00:00 2001
From: Denis Vlasenko <vda.linux@googlemail.com>
Date: Mon, 16 Apr 2007 22:34:39 +0000
Subject: shells: remove few statics and duplicated code (much more of the same
 remains, alas) function                                             old    
 new   delta doset                                                330     332 
     +2 warn                                                  53      51     
 -2 onecommand                                           463     461      -2
 ioecho                                                40      38      -2
 forkexec                                            1412    1410      -2 err 
                                                  81      79      -2 setdash  
                                             59      56      -3 flag          
                                         4       -      -4 msh_main           
                                 1389    1384      -5 eval                    
                             388     381      -7 subgetc                      
                        759     747     -12 static.local                      
                    14       -     -14 b_adduint                              
               70      52     -18
 ------------------------------------------------------------------------------
 (add/remove: 0/2 grow/shrink: 1/10 up/down: 2/-73)            Total: -71
 bytes

---
 shell/hush.c | 34 ++++++++++++----------------------
 shell/msh.c  | 36 ++++++++++++++++--------------------
 2 files changed, 28 insertions(+), 42 deletions(-)

diff --git a/shell/hush.c b/shell/hush.c
index 9489fb276..6173afc80 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -20,7 +20,6 @@
  *      rewrites.
  *
  * Other credits:
- *      simple_itoa() was lifted from boa-0.93.15
  *      b_addchr() derived from similar w_addchar function in glibc-2.2
  *      setup_redirect(), redirect_opt_num(), and big chunks of main()
  *        and many builtins derived from contributions by Erik Andersen
@@ -280,7 +279,7 @@ struct built_in_command {
 /* belongs in busybox.h */
 static int max(int a, int b)
 {
-	return (a>b)?a:b;
+	return (a > b) ? a : b;
 }
 
 /* This should be in utility.c */
@@ -811,23 +810,12 @@ static int b_addqchr(o_string *o, int ch, int quote)
 	return b_addchr(o, ch);
 }
 
-/* belongs in utility.c */
-static char *simple_itoa(unsigned i)
-{
-	static char local[sizeof(int)*3 + 2];
-	char *p = &local[sizeof(int)*3 + 2 - 1];
-	*p-- = '\0';
-	do {
-		*p-- = '0' + i % 10;
-		i /= 10;
-	} while (i > 0);
-	return p + 1;
-}
-
 static int b_adduint(o_string *o, unsigned i)
 {
 	int r;
-	char *p = simple_itoa(i);
+	char buf[sizeof(unsigned)*3 + 1];
+	char *p = buf;
+	*(utoa_to_buf(i, buf, sizeof(buf))) = '\0';
 	/* no escape checking necessary */
 	do r = b_addchr(o, *p++); while (r == 0 && *p);
 	return r;
@@ -2008,8 +1996,8 @@ static int reserved_word(o_string *dest, struct p_context *ctx)
 		{ "do",    RES_DO,    FLAG_DONE },
 		{ "done",  RES_DONE,  FLAG_END  }
 	};
+	enum { NRES = sizeof(reserved_list)/sizeof(reserved_list[0]) };
 	const struct reserved_combo *r;
-#define NRES sizeof(reserved_list)/sizeof(reserved_list[0])
 
 	for (r = reserved_list;	r < reserved_list+NRES; r++) {
 		if (strcmp(dest->data, r->literal) == 0) {
@@ -2113,11 +2101,13 @@ static int done_command(struct p_context *ctx)
 	struct child_prog *prog = ctx->child;
 
 	if (prog && prog->group == NULL
-	         && prog->argv == NULL
-	         && prog->redirects == NULL) {
+	 && prog->argv == NULL
+	 && prog->redirects == NULL
+	) {
 		debug_printf("done_command: skipping null command\n");
 		return 0;
-	} else if (prog) {
+	}
+	if (prog) {
 		pi->num_progs++;
 		debug_printf("done_command: num_progs incremented to %d\n", pi->num_progs);
 	} else {
@@ -2172,7 +2162,7 @@ static int redirect_dup_num(struct in_str *input)
 		return -3;  /* "-" represents "close me" */
 	}
 	while (isdigit(ch)) {
-		d = d*10+(ch-'0');
+		d = d*10 + (ch-'0');
 		ok = 1;
 		b_getch(input);
 		ch = b_peek(input);
@@ -2226,7 +2216,7 @@ static FILE *generate_stream_from_list(struct pipe *head)
 	} else if (pid == 0) {
 		close(channel[0]);
 		if (channel[1] != 1) {
-			dup2(channel[1],1);
+			dup2(channel[1], 1);
 			close(channel[1]);
 		}
 		_exit(run_list_real(head));   /* leaks memory */
diff --git a/shell/msh.c b/shell/msh.c
index 91e302fac..4feede6fa 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -264,10 +264,6 @@ static const char *const T_CMD_NAMES[] = {
 #define DOALL    (DOSUB|DOBLANK|DOGLOB|DOKEY|DOTRIM)
 
 
-/* PROTOTYPES */
-static int newfile(char *s);
-
-
 struct brkcon {
 	jmp_buf brkpt;
 	struct brkcon *nextlev;
@@ -285,8 +281,8 @@ struct brkcon {
  * -u: unset variables net diagnostic
  */
 static char flags['z' - 'a' + 1];
-/* this looks weird, but is OK ... we index flag with 'a'...'z' */
-static char *flag = flags - 'a';
+/* this looks weird, but is OK ... we index FLAG with 'a'...'z' */
+#define FLAG (flags - 'a')
 
 /* moved to G: static char *trap[_NSIG + 1]; */
 /* moved to G: static char ourtrap[_NSIG + 1]; */
@@ -693,7 +689,7 @@ static int intr;                        /* interrupt pending */
 static int inparse;
 static char *null = (char*)"";          /* null value for variable */
 static int heedint = 1;                 /* heed interrupt signals */
-static void (*qflag) (int) = SIG_IGN;
+static void (*qflag)(int) = SIG_IGN;
 static int startl;
 static int peeksym;
 static int nlseen;
@@ -855,14 +851,14 @@ static void warn(const char *s)
 		exstat = -1;
 	}
 	prs("\n");
-	if (flag['e'])
+	if (FLAG['e'])
 		leave();
 }
 
 static void err(const char *s)
 {
 	warn(s);
-	if (flag['n'])
+	if (FLAG['n'])
 		return;
 	if (!interactive)
 		leave();
@@ -1295,7 +1291,7 @@ static void setdash(void)
 
 	cp = m;
 	for (c = 'a'; c <= 'z'; c++)
-		if (flag[c])
+		if (FLAG[c])
 			*cp++ = c;
 	*cp = '\0';
 	setval(lookup("-"), m);
@@ -1401,7 +1397,7 @@ static void onecommand(void)
 	intr = 0;
 	execflg = 0;
 
-	if (!flag['n']) {
+	if (!FLAG['n']) {
 		DBGPRINTF(("ONECOMMAND: calling execute, t=outtree=%p\n",
 				   outtree));
 		execute(outtree, NOPIPE, NOPIPE, 0);
@@ -2736,7 +2732,7 @@ static int forkexec(struct op *t, int *pin, int *pout, int act, char **wp)
 
 		/* strip all initial assignments */
 		/* not correct wrt PATH=yyy command  etc */
-		if (flag['x']) {
+		if (FLAG['x']) {
 			DBGPRINTF9(("FORKEXEC: echo'ing, cp=%p, wp=%p, owp=%p\n",
 						cp, wp, owp));
 			echo(cp ? wp : owp);
@@ -3598,18 +3594,18 @@ static int doset(struct op *t)
 		/* bad: t->words++; */
 		for (n = 0; (t->words[n] = t->words[n + 1]) != NULL; n++);
 		if (*++cp == 0)
-			flag['x'] = flag['v'] = 0;
+			FLAG['x'] = FLAG['v'] = 0;
 		else {
 			for (; *cp; cp++) {
 				switch (*cp) {
 				case 'e':
 					if (!interactive)
-						flag['e']++;
+						FLAG['e']++;
 					break;
 
 				default:
 					if (*cp >= 'a' && *cp <= 'z')
-						flag[(int) *cp]++;
+						FLAG[(int) *cp]++;
 					break;
 				}
 			}
@@ -3692,14 +3688,14 @@ static char **eval(char **ap, int f)
 	if (newenv(setjmp(errpt)) == 0) {
 		while (*ap && isassign(*ap))
 			expand(*ap++, &wb, f & ~DOGLOB);
-		if (flag['k']) {
+		if (FLAG['k']) {
 			for (wf = ap; *wf; wf++) {
 				if (isassign(*wf))
 					expand(*wf, &wb, f & ~DOGLOB);
 			}
 		}
 		for (wb = addword((char *) 0, wb); *ap; ap++) {
-			if (!flag['k'] || !isassign(*ap))
+			if (!FLAG['k'] || !isassign(*ap))
 				expand(*ap, &wb, f & ~DOKEY);
 		}
 		wb = addword((char *) 0, wb);
@@ -3992,7 +3988,7 @@ static int dollar(int quoted)
 		}
 	} else if (c == '+')
 		dolp = strsave(cp, areanum);
-	if (flag['u'] && dolp == null) {
+	if (FLAG['u'] && dolp == null) {
 		prs("unset variable: ");
 		err(s);
 		gflg++;
@@ -4613,7 +4609,7 @@ static int readc(void)
 
 static void ioecho(char c)
 {
-	if (flag['v'])
+	if (FLAG['v'])
 		write(2, &c, sizeof c);
 }
 
@@ -5278,7 +5274,7 @@ int msh_main(int argc, char **argv)
 					interactive++;
 				default:
 					if (*s >= 'a' && *s <= 'z')
-						flag[(int) *s]++;
+						FLAG[(int) *s]++;
 				}
 		} else {
 			argv--;
-- 
cgit v1.2.3-55-g6feb