msh: smallish code shrinkage; cosmetics
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 9 Apr 2007 03:06:34 +0000 (03:06 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 9 Apr 2007 03:06:34 +0000 (03:06 -0000)
shell/msh.c

index 50ec90b0b4a829d889dd31bf4c017423f16b7b1c..3a5c8505081eb1b85757e658a0f8c89afc9eca53 100644 (file)
@@ -13,8 +13,8 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-# include <sys/times.h>
-# include <setjmp.h>
+#include <sys/times.h>
+#include <setjmp.h>
 
 #ifdef STANDALONE
 # ifndef _GNU_SOURCE
@@ -291,15 +291,10 @@ static char flags['z' - 'a' + 1];
 /* this looks weird, but is OK ... we index flag with 'a'...'z' */
 static char *flag = flags - 'a';
 
-static char *null;                             /* null value for variable */
-static int intr;                               /* interrupt pending */
-
 /* moved to G: static char *trap[_NSIG + 1]; */
 /* moved to G: static char ourtrap[_NSIG + 1]; */
 static int trapset;                            /* trap pending */
 
-static int heedint;                            /* heed interrupt signals */
-
 static int yynerrs;                            /* yacc */
 
 /* moved to G: static char line[LINELIM]; */
@@ -615,55 +610,54 @@ struct res {
        int r_val;
 };
 static const struct res restab[] = {
-       {"for", FOR},
-       {"case", CASE},
-       {"esac", ESAC},
-       {"while", WHILE},
-       {"do", DO},
-       {"done", DONE},
-       {"if", IF},
-       {"in", IN},
-       {"then", THEN},
-       {"else", ELSE},
-       {"elif", ELIF},
-       {"until", UNTIL},
-       {"fi", FI},
-       {";;", BREAK},
-       {"||", LOGOR},
-       {"&&", LOGAND},
-       {"{", '{'},
-       {"}", '}'},
-       {".", DOT},
-       {0, 0},
+       { "for"  , FOR    },
+       { "case" , CASE   },
+       { "esac" , ESAC   },
+       { "while", WHILE  },
+       { "do"   , DO     },
+       { "done" , DONE   },
+       { "if"   , IF     },
+       { "in"   , IN     },
+       { "then" , THEN   },
+       { "else" , ELSE   },
+       { "elif" , ELIF   },
+       { "until", UNTIL  },
+       { "fi"   , FI     },
+       { ";;"   , BREAK  },
+       { "||"   , LOGOR  },
+       { "&&"   , LOGAND },
+       { "{"    , '{'    },
+       { "}"    , '}'    },
+       { "."    , DOT    },
+       { NULL   , 0      },
 };
 
-
 struct builtincmd {
        const char *name;
-       int (*builtinfunc) (struct op * t);
+       int (*builtinfunc)(struct op *t);
 };
 static const struct builtincmd builtincmds[] = {
-       {".", dodot},
-       {":", dolabel},
-       {"break", dobreak},
-       {"cd", dochdir},
-       {"continue", docontinue},
-       {"eval", doeval},
-       {"exec", doexec},
-       {"exit", doexit},
-       {"export", doexport},
-       {"help", dohelp},
-       {"login", dologin},
-       {"newgrp", dologin},
-       {"read", doread},
-       {"readonly", doreadonly},
-       {"set", doset},
-       {"shift", doshift},
-       {"times", dotimes},
-       {"trap", dotrap},
-       {"umask", doumask},
-       {"wait", dowait},
-       {0, 0}
+       { "."       , dodot      },
+       { ":"       , dolabel    },
+       { "break"   , dobreak    },
+       { "cd"      , dochdir    },
+       { "continue", docontinue },
+       { "eval"    , doeval     },
+       { "exec"    , doexec     },
+       { "exit"    , doexit     },
+       { "export"  , doexport   },
+       { "help"    , dohelp     },
+       { "login"   , dologin    },
+       { "newgrp"  , dologin    },
+       { "read"    , doread     },
+       { "readonly", doreadonly },
+       { "set"     , doset      },
+       { "shift"   , doshift    },
+       { "times"   , dotimes    },
+       { "trap"    , dotrap     },
+       { "umask"   , doumask    },
+       { "wait"    , dowait     },
+       { NULL      , NULL       },
 };
 
 static struct op *scantree(struct op *);
@@ -697,11 +691,11 @@ static struct var *path;          /* search path for commands */
 static struct var *shell;              /* shell to interpret command files */
 static struct var *ifs;                        /* field separators */
 
-static int areanum;                            /* current allocation area */
-static int intr;
+static int areanum;                     /* current allocation area */
+static int intr;                        /* interrupt pending */
 static int inparse;
-static char *null = (char*)"";
-static int heedint = 1;
+static char *null = (char*)"";          /* null value for variable */
+static int heedint = 1;                 /* heed interrupt signals */
 static void (*qflag) (int) = SIG_IGN;
 static int startl;
 static int peeksym;
@@ -2693,7 +2687,7 @@ typedef int (*builtin_func_ptr)(struct op *);
 static builtin_func_ptr inbuilt(const char *s) {
        const struct builtincmd *bp;
 
-       for (bp = builtincmds; bp->name != NULL; bp++)
+       for (bp = builtincmds; bp->name; bp++)
                if (strcmp(bp->name, s) == 0)
                        return bp->builtinfunc;
 
@@ -3191,29 +3185,27 @@ static int dohelp(struct op *t)
        puts("\nBuilt-in commands:\n"
             "-------------------");
 
-       for (col = 0, x = builtincmds; x->builtinfunc != NULL; x++) {
-               if (!x->name)
-                       continue;
-               col += printf("%s%s", ((col == 0) ? "\t" : " "), x->name);
+       col = 0;
+       x = builtincmds;
+       while (x->name) {
+               col += printf("%c%s", ((col == 0) ? '\t' : ' '), x->name);
                if (col > 60) {
                        puts("");
                        col = 0;
                }
+               x++;
        }
 #if ENABLE_FEATURE_SH_STANDALONE_SHELL
        {
-               int i;
-               const struct BB_applet *applet;
+               const struct BB_applet *applet = applets;
 
-               for (i = 0, applet = applets; i < NUM_APPLETS; applet++, i++) {
-                       if (!applet->name)
-                               continue;
-
-                       col += printf("%s%s", ((col == 0) ? "\t" : " "), applet->name);
+               while (applet->name) {
+                       col += printf("%c%s", ((col == 0) ? '\t' : ' '), applet->name);
                        if (col > 60) {
                                puts("");
                                col = 0;
                        }
+                       applet++;
                }
        }
 #endif
@@ -3221,8 +3213,6 @@ static int dohelp(struct op *t)
        return EXIT_SUCCESS;
 }
 
-
-
 static int dolabel(struct op *t)
 {
        return 0;