msh: cleaning up for -Wwrite-strings
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 1 Feb 2007 01:39:24 +0000 (01:39 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 1 Feb 2007 01:39:24 +0000 (01:39 -0000)
shell/msh.c

index 584668607922044c3883b5240ae1b9e2a7a912ca..b71066abccb9b0a0d1c0579d0e758ae0ba84353e 100644 (file)
@@ -13,9 +13,9 @@
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include "busybox.h"
 #include <setjmp.h>
 #include <sys/times.h>
+#include "busybox.h"
 
 
 /*#define MSHDEBUG 1*/
@@ -42,18 +42,18 @@ int mshdbg_rc = 0;
 #else
 
 #define DBGPRINTF(x)
-#define DBGPRINTF0(x)
-#define DBGPRINTF1(x)
-#define DBGPRINTF2(x)
-#define DBGPRINTF3(x)
-#define DBGPRINTF4(x)
-#define DBGPRINTF5(x)
-#define DBGPRINTF6(x)
-#define DBGPRINTF7(x)
-#define DBGPRINTF8(x)
-#define DBGPRINTF9(x)
-
-#define RCPRINTF(x)
+#define DBGPRINTF0(x) ((void)0)
+#define DBGPRINTF1(x) ((void)0)
+#define DBGPRINTF2(x) ((void)0)
+#define DBGPRINTF3(x) ((void)0)
+#define DBGPRINTF4(x) ((void)0)
+#define DBGPRINTF5(x) ((void)0)
+#define DBGPRINTF6(x) ((void)0)
+#define DBGPRINTF7(x) ((void)0)
+#define DBGPRINTF8(x) ((void)0)
+#define DBGPRINTF9(x) ((void)0)
+
+#define RCPRINTF(x) ((void)0)
 
 #endif                                                 /* MSHDEBUG */
 
@@ -258,7 +258,8 @@ static char *elinep;
 /*
  * other functions
  */
-static int (*inbuilt(char *s)) (struct op *);
+typedef int (*builtin_func_ptr)(struct op *);
+static builtin_func_ptr inbuilt(char *s);
 
 static char *rexecve(char *c, char **v, char **envp);
 static char *space(int n);
@@ -577,7 +578,7 @@ static void globname(char *we, char *pp);
 static char *generate(char *start1, char *end1, char *middle, char *end);
 static int anyspcl(struct wdblock *wb);
 static int xstrcmp(char *p1, char *p2);
-static void glob0(char *a0, unsigned int a1, int a2,
+static void glob0(char *a0, unsigned a1, int a2,
                                  int (*a3) (char *, char *));
 static void glob1(char *base, char *lim);
 static void glob2(char *i, char *j);
@@ -596,7 +597,7 @@ struct here {
 static const char * const signame[] = {
        "Signal 0",
        "Hangup",
-       (char *) NULL,                          /* interrupt */
+       NULL,  /* interrupt */
        "Quit",
        "Illegal instruction",
        "Trace/BPT trap",
@@ -607,7 +608,7 @@ static const char * const signame[] = {
        "SIGUSR1",
        "SIGSEGV",
        "SIGUSR2",
-       (char *) NULL,                          /* broken pipe */
+       NULL,  /* broken pipe */
        "Alarm clock",
        "Terminated",
 };
@@ -725,21 +726,21 @@ static struct iobuf sharedbuf = { AFID_NOBUF };
 static struct iobuf mainbuf = { AFID_NOBUF };
 static unsigned bufid = AFID_ID;       /* buffer id counter */
 
-static struct here *inhere;            /* list of hear docs while parsing */
-static struct here *acthere;   /* list of active here documents */
-static struct region *areabot; /* bottom of area */
-static struct region *areatop; /* top of area */
-static struct region *areanxt; /* starting point of scan */
+static struct here *inhere;     /* list of hear docs while parsing */
+static struct here *acthere;    /* list of active here documents */
+static struct region *areabot;  /* bottom of area */
+static struct region *areatop;  /* top of area */
+static struct region *areanxt;  /* starting point of scan */
 static void *brktop;
 static void *brkaddr;
 
 static struct env e = {
-       line,                                           /* linep:  char ptr */
-       iostack,                                        /* iobase:  struct io ptr */
-       iostack - 1,                            /* iop:  struct io ptr */
-       (xint *) NULL,                          /* errpt:  void ptr for errors? */
-       FDBASE,                                         /* iofd:  file desc  */
-       (struct env *) NULL                     /* oenv:  struct env ptr */
+       line,                   /* linep:  char ptr */
+       iostack,                /* iobase:  struct io ptr */
+       iostack - 1,            /* iop:  struct io ptr */
+       (xint *) NULL,          /* errpt:  void ptr for errors? */
+       FDBASE,                 /* iofd:  file desc  */
+       (struct env *) NULL     /* oenv:  struct env ptr */
 };
 
 #ifdef MSHDEBUG
@@ -751,8 +752,6 @@ void print_t(struct op *t)
        if (t->words) {
                DBGPRINTF(("T: W1: %s", t->words[0]));
        }
-
-       return;
 }
 
 void print_tree(struct op *head)
@@ -770,8 +769,6 @@ void print_tree(struct op *head)
 
        if (head->right)
                print_tree(head->right);
-
-       return;
 }
 #endif                                                 /* MSHDEBUG */
 
@@ -917,7 +914,8 @@ int msh_main(int argc, char **argv)
 #endif
                        DBGPRINTF(("MSH_MAIN: calling newfile()\n"));
 
-                       if (newfile(name = *++argv))
+                       name = *++argv;
+                       if (newfile(name))
                                exit(1);                /* Exit on error */
                }
        }
@@ -943,9 +941,11 @@ int msh_main(int argc, char **argv)
        signal(SIGQUIT, qflag);
        if (name && name[0] == '-') {
                interactive++;
-               if ((f = open(".profile", 0)) >= 0)
+               f = open(".profile", 0);
+               if (f >= 0)
                        next(remap(f));
-               if ((f = open("/etc/profile", 0)) >= 0)
+               f = open("/etc/profile", 0);
+               if (f >= 0)
                        next(remap(f));
        }
        if (interactive)
@@ -958,7 +958,8 @@ int msh_main(int argc, char **argv)
        dolv[0] = name;
        if (dolc > 1) {
                for (ap = ++argv; --argc > 0;) {
-                       if (assign(*ap = *argv++, !COPYV)) {
+                       *ap = *argv++;
+                       if (assign(*ap, !COPYV)) {
                                dolc--;                 /* keyword */
                        } else {
                                ap++;
@@ -995,7 +996,7 @@ static void setdash(void)
        for (c = 'a'; c <= 'z'; c++)
                if (flag[c])
                        *cp++ = c;
-       *cp = 0;
+       *cp = '\0';
        setval(lookup("-"), m);
 }
 
@@ -1005,6 +1006,7 @@ static int newfile(char *s)
 
        DBGPRINTF7(("NEWFILE: opening %s\n", s));
 
+       f = 0;
        if (NOT_LONE_DASH(s)) {
                DBGPRINTF(("NEWFILE: s is %s\n", s));
                f = open(s, 0);
@@ -1013,8 +1015,7 @@ static int newfile(char *s)
                        err(": cannot open");
                        return 1;
                }
-       } else
-               f = 0;
+       }
 
        next(remap(f));
        return 0;
@@ -1078,8 +1079,10 @@ static void onecommand(void)
        intr = 0;
        execflg = 0;
 
-       setjmp(failpt = m1);            /* Bruce Evans' fix */
-       if (setjmp(failpt = m1) || yyparse() || intr) {
+       failpt = m1;
+       setjmp(failpt);         /* Bruce Evans' fix */
+       failpt = m1;
+       if (setjmp(failpt) || yyparse() || intr) {
 
                DBGPRINTF(("ONECOMMAND: this is not good.\n"));
 
@@ -1253,7 +1256,7 @@ static char *space(int n)
        char *cp;
 
        cp = getcell(n);
-       if (cp == 0)
+       if (cp == '\0')
                err("out of string space");
        return cp;
 }
@@ -1289,7 +1292,7 @@ static void runtrap(int i)
                return;
 
        if (i == 0)
-               trap[i] = 0;
+               trap[i] = NULL;
 
        RUN(aword, trapstr, nlchar);
 }
@@ -1329,7 +1332,7 @@ static struct var *lookup(char *n)
        for (cp = vp->name; (*cp = *n++) && *cp != '='; cp++);
        if (*cp == 0)
                *cp = '=';
-       *++cp = 0;
+       *++cp = '\0';
        setarea((char *) vp, 0);
        setarea((char *) vp->name, 0);
        vp->value = null;
@@ -1369,13 +1372,13 @@ static void nameval(struct var *vp, char *val, char *name)
        fl = 0;
        if (name == NULL) {
                xp = space(strlen(vp->name) + strlen(val) + 2);
-               if (xp == 0)
+               if (xp == NULL)
                        return;
                /* make string:  name=value */
                setarea((char *) xp, 0);
                name = xp;
                for (cp = vp->name; (*xp = *cp++) && *xp != '='; xp++);
-               if (*xp++ == 0)
+               if (*xp++ == '\0')
                        xp[-1] = '=';
                nv = xp;
                for (cp = val; (*xp++ = *cp++) != '\0';);
@@ -1407,7 +1410,7 @@ static int isassign(char *s)
        if (!isalpha((int) *s) && *s != '_')
                return 0;
        for (; *s != '='; s++)
-               if (*s == 0 || (!isalnum(*s) && *s != '_'))
+               if (*s == '\0' || (!isalnum(*s) && *s != '_'))
                        return 0;
 
        return 1;
@@ -1423,7 +1426,7 @@ static int assign(char *s, int cf)
        if (!isalpha(*s) && *s != '_')
                return 0;
        for (cp = s; *cp != '='; cp++)
-               if (*cp == 0 || (!isalnum(*cp) && *cp != '_'))
+               if (*cp == '\0' || (!isalnum(*cp) && *cp != '_'))
                        return 0;
        vp = lookup(s);
        nameval(vp, ++cp, cf == COPYV ? (char *) NULL : s);
@@ -1461,10 +1464,10 @@ static void putvlist(int f, int out)
 
 static int eqname(char *n1, char *n2)
 {
-       for (; *n1 != '=' && *n1 != 0; n1++)
+       for (; *n1 != '=' && *n1 != '\0'; n1++)
                if (*n2++ != *n1)
                        return 0;
-       return *n2 == 0 || *n2 == '=';
+       return *n2 == '\0' || *n2 == '=';
 }
 
 static char *findeq(char *cp)
@@ -1520,14 +1523,15 @@ static int gmatch(char *s, char *p)
                                return 0;
                }
        }
-       return *s == 0;
+       return *s == '\0';
 }
 
 static char *cclass(char *p, int sub)
 {
        int c, d, not, found;
 
-       if ((not = *p == NOT) != 0)
+       not = (*p == NOT);
+       if (not != 0)
                p++;
        found = not;
        do {
@@ -1554,7 +1558,14 @@ static char *cclass(char *p, int sub)
  * It is assumed that sbrk() and brk() manipulate the high end.
  */
 
-#define sbrk(X) ({ void * __q = (void *)-1; if (brkaddr + (int)(X) < brktop) { __q = brkaddr; brkaddr+=(int)(X); } __q;})
+#define sbrk(X) ({ \
+       void * __q = (void *)-1; \
+       if (brkaddr + (int)(X) < brktop) { \
+               __q = brkaddr; \
+               brkaddr += (int)(X); \
+       } \
+       __q; \
+})
 
 static void initarea(void)
 {
@@ -1666,7 +1677,8 @@ static void setarea(char *cp, int a)
 {
        struct region *p;
 
-       if ((p = (struct region *) cp) != NULL)
+       p = (struct region *) cp;
+       if (p != NULL)
                (p - 1)->area = a;
 }
 
@@ -1839,7 +1851,8 @@ static int synio(int cf)
 
 static void musthave(int c, int cf)
 {
-       if ((peeksym = yylex(cf)) != c) {
+       peeksym = yylex(cf);
+       if (peeksym != c) {
                DBGPRINTF7(("MUSTHAVE: error!\n"));
                SYNTAXERR;
        }
@@ -2301,7 +2314,6 @@ static int yylex(int cf)
                return c;
        }
 
-
        nlseen = 0;
        atstart = startl;
        startl = 0;
@@ -2311,14 +2323,15 @@ static int yylex(int cf)
 /* MALAMO */
        line[LINELIM - 1] = '\0';
 
 loop:
+ loop:
        while ((c = my_getc(0)) == ' ' || c == '\t')    /* Skip whitespace */
                ;
 
        switch (c) {
        default:
                if (any(c, "0123456789")) {
-                       unget(c1 = my_getc(0));
+                       c1 = my_getc(0);
+                       unget(c1);
                        if (c1 == '<' || c1 == '>') {
                                iounit = c - '0';
                                goto loop;
@@ -2329,7 +2342,7 @@ static int yylex(int cf)
                break;
 
        case '#':                                       /* Comment, skip to next newline or End-of-string */
-               while ((c = my_getc(0)) != 0 && c != '\n');
+               while ((c = my_getc(0)) != '\0' && c != '\n');
                unget(c);
                goto loop;
 
@@ -2340,8 +2353,10 @@ static int yylex(int cf)
        case '$':
                DBGPRINTF9(("YYLEX: found $\n"));
                *e.linep++ = c;
-               if ((c = my_getc(0)) == '{') {
-                       if ((c = collect(c, '}')) != '\0')
+               c = my_getc(0);
+               if (c == '{') {
+                       c = collect(c, '}');
+                       if (c != '\0')
                                return c;
                        goto pack;
                }
@@ -2350,7 +2365,8 @@ static int yylex(int cf)
        case '`':
        case '\'':
        case '"':
-               if ((c = collect(c, c)) != '\0')
+               c = collect(c, c);
+               if (c != '\0')
                        return c;
                goto pack;
 
@@ -2359,10 +2375,10 @@ static int yylex(int cf)
        case ';':
                startl = 1;
                /* If more chars process them, else return NULL char */
-               if ((c1 = dual(c)) != '\0')
+               c1 = dual(c);
+               if (c1 != '\0')
                        return c1;
-               else
-                       return c;
+               return c;
 
        case '^':
                startl = 1;
@@ -2397,8 +2413,8 @@ static int yylex(int cf)
 
        unget(c);
 
 pack:
-       while ((c = my_getc(0)) != 0 && !any(c, "`$ '\"\t;&<>()|^\n")) {
+ pack:
+       while ((c = my_getc(0)) != '\0' && !any(c, "`$ '\"\t;&<>()|^\n")) {
                if (e.linep >= elinep)
                        err("word too long");
                else
@@ -2412,9 +2428,12 @@ static int yylex(int cf)
 
        *e.linep++ = '\0';
 
-       if (atstart && (c = rlookup(line)) != 0) {
-               startl = 1;
-               return c;
+       if (atstart) {
+               c = rlookup(line);
+               if (c != 0) {
+                       startl = 1;
+                       return c;
+               }
        }
 
        yylval.cp = strsave(line, areanum);
@@ -2464,15 +2483,15 @@ static int dual(int c)
 
        DBGPRINTF8(("DUAL: enter, c=%d\n", c));
 
-       *cp++ = c;                                      /* c is the given "peek" char */
-       *cp++ = my_getc(0);                     /* get next char of input */
-       *cp = 0;                                        /* add EOS marker */
+       *cp++ = c;              /* c is the given "peek" char */
+       *cp++ = my_getc(0);     /* get next char of input */
+       *cp = '\0';             /* add EOS marker */
 
-       c = rlookup(s);                         /* see if 2 chars form a shell multiline */
+       c = rlookup(s);         /* see if 2 chars form a shell multiline */
        if (c == 0)
-               unget(*--cp);                   /* String is not a shell multiline, put peek char back */
+               unget(*--cp);   /* String is not a shell multiline, put peek char back */
 
-       return c;                                       /* String is multiline, return numeric multiline (restab) code */
+       return c;               /* String is multiline, return numeric multiline (restab) code */
 }
 
 static void diag(int ec)
@@ -2485,10 +2504,10 @@ static void diag(int ec)
        if (c == '>' || c == '<') {
                if (c != ec)
                        zzerr();
-               yylval.i = ec == '>' ? IOWRITE | IOCAT : IOHERE;
+               yylval.i = (ec == '>' ? IOWRITE | IOCAT : IOHERE);
                c = my_getc(0);
        } else
-               yylval.i = ec == '>' ? IOWRITE : IOREAD;
+               yylval.i = (ec == '>' ? IOWRITE : IOREAD);
        if (c != '&' || yylval.i == IOHERE)
                unget(c);
        else
@@ -2603,20 +2622,7 @@ static int execute(struct op *t, int *pin, int *pout, int act)
                        DBGPRINTF7(("EXECUTE: TASYNC clause, calling vfork()...\n"));
 
                        i = vfork();
-                       if (i != 0) {
-                               interactive = hinteractive;
-                               if (i != -1) {
-                                       setval(lookup("!"), putn(i));
-                                       if (pin != NULL)
-                                               closepipe(pin);
-                                       if (interactive) {
-                                               prs(putn(i));
-                                               prs("\n");
-                                       }
-                               } else
-                                       rv = -1;
-                               setstatus(rv);
-                       } else {
+                       if (i == 0) { /* child */
                                signal(SIGINT, SIG_IGN);
                                signal(SIGQUIT, SIG_IGN);
                                if (interactive)
@@ -2628,6 +2634,18 @@ static int execute(struct op *t, int *pin, int *pout, int act)
                                }
                                _exit(execute(t->left, pin, pout, FEXEC));
                        }
+                       interactive = hinteractive;
+                       if (i != -1) {
+                               setval(lookup("!"), putn(i));
+                               if (pin != NULL)
+                                       closepipe(pin);
+                               if (interactive) {
+                                       prs(putn(i));
+                                       prs("\n");
+                               }
+                       } else
+                               rv = -1;
+                       setstatus(rv);
                }
                break;
 
@@ -2642,7 +2660,8 @@ static int execute(struct op *t, int *pin, int *pout, int act)
        case TFOR:
                if (wp == NULL) {
                        wp = dolv + 1;
-                       if ((i = dolc) < 0)
+                       i = dolc;
+                       if (i < 0)
                                i = 0;
                } else {
                        i = -1;
@@ -2683,7 +2702,7 @@ static int execute(struct op *t, int *pin, int *pout, int act)
 
        case TCASE:
                cp = evalstr(t->str, DOSUB | DOTRIM);
-               if (cp == 0)
+               if (cp == NULL)
                        cp = "";
 
                DBGPRINTF7(("EXECUTE: TCASE, t->str is %s, cp is %s\n",
@@ -2700,15 +2719,20 @@ static int execute(struct op *t, int *pin, int *pout, int act)
 
        case TBRACE:
 /*
-               if (iopp = t->ioact)
+               iopp = t->ioact;
+               if (i)
                        while (*iopp)
                                if (iosetup(*iopp++, pin!=NULL, pout!=NULL)) {
                                        rv = -1;
                                        break;
                                }
 */
-               if (rv >= 0 && (t1 = t->left))
-                       rv = execute(t1, pin, pout, 0);
+               if (rv >= 0) {
+                       t1 = t->left;
+                       if (t1) {
+                               rv = execute(t1, pin, pout, 0);
+                       }
+               }
                break;
 
        };
@@ -2739,7 +2763,7 @@ forkexec(struct op *t, int *pin, int *pout, int act, char **wp)
 {
        pid_t newpid;
        int i, rv;
-       int (*shcom) (struct op *) = NULL;
+       builtin_func_ptr shcom = NULL;
        int f;
        char *cp = NULL;
        struct ioword **iopp;
@@ -2787,10 +2811,12 @@ forkexec(struct op *t, int *pin, int *pout, int act, char **wp)
                }
 
                if (cp == NULL && t->ioact == NULL) {
-                       while ((cp = *owp++) != NULL && assign(cp, COPYV));
+                       while ((cp = *owp++) != NULL && assign(cp, COPYV))
+                               /**/;
                        DBGPRINTF(("FORKEXEC: returning setstatus()\n"));
                        return setstatus(0);
-               } else if (cp != NULL) {
+               }
+               if (cp != NULL) {
                        shcom = inbuilt(cp);
                }
        }
@@ -2820,7 +2846,6 @@ forkexec(struct op *t, int *pin, int *pout, int act, char **wp)
                        return -1;
                }
 
-
                if (newpid > 0) {               /* Parent */
 
                        /* Restore values */
@@ -2858,7 +2883,6 @@ forkexec(struct op *t, int *pin, int *pout, int act, char **wp)
                execflg = 0;
        }
 
-
        if (owp != NULL)
                while ((cp = *owp++) != NULL && assign(cp, COPYV))
                        if (shcom == NULL)
@@ -2957,8 +2981,9 @@ static int iosetup(struct ioword *iop, int pipein, int pipeout)
 
        msg = iop->io_flag & (IOREAD | IOHERE) ? "open" : "create";
        if ((iop->io_flag & IOHERE) == 0) {
-               cp = iop->io_name;
-               if ((cp = evalstr(cp, DOSUB | DOTRIM)) == NULL)
+               cp = iop->io_name; /* huh?? */
+               cp = evalstr(cp, DOSUB | DOTRIM);
+               if (cp == NULL)
                        return 1;
        }
 
@@ -2984,7 +3009,8 @@ static int iosetup(struct ioword *iop, int pipein, int pipeout)
                break;
 
        case IOWRITE | IOCAT:
-               if ((u = open(cp, 1)) >= 0) {
+               u = open(cp, 1);
+               if (u >= 0) {
                        lseek(u, (long) 0, SEEK_END);
                        break;
                }
@@ -3005,11 +3031,10 @@ static int iosetup(struct ioword *iop, int pipein, int pipeout)
                prs(": cannot ");
                warn(msg);
                return 1;
-       } else {
-               if (u != iop->io_unit) {
-                       dup2(u, iop->io_unit);
-                       close(u);
-               }
+       }
+       if (u != iop->io_unit) {
+               dup2(u, iop->io_unit);
+               close(u);
        }
        return 0;
 }
@@ -3033,7 +3058,6 @@ static struct op **find1case(struct op *t, char *w)
        struct op **tp;
        char **wp, *cp;
 
-
        if (t == NULL) {
                DBGPRINTF3(("FIND1CASE: enter, t==NULL, returning.\n"));
                return NULL;
@@ -3043,7 +3067,8 @@ static struct op **find1case(struct op *t, char *w)
                                T_CMD_NAMES[t->type]));
 
        if (t->type == TLIST) {
-               if ((tp = find1case(t->left, w)) != NULL) {
+               tp = find1case(t->left, w);
+               if (tp != NULL) {
                        DBGPRINTF3(("FIND1CASE: found one to the left, returning tp=%p\n", tp));
                        return tp;
                }
@@ -3051,12 +3076,14 @@ static struct op **find1case(struct op *t, char *w)
        } else
                t1 = t;
 
-       for (wp = t1->words; *wp;)
-               if ((cp = evalstr(*wp++, DOSUB)) && gmatch(w, cp)) {
+       for (wp = t1->words; *wp;) {
+               cp = evalstr(*wp++, DOSUB);
+               if (cp && gmatch(w, cp)) {
                        DBGPRINTF3(("FIND1CASE: returning &t1->left= %p.\n",
                                                &t1->left));
                        return &t1->left;
                }
+       }
 
        DBGPRINTF(("FIND1CASE: returning NULL\n"));
        return NULL;
@@ -3178,11 +3205,13 @@ static char *rexecve(char *c, char **v, char **envp)
        while (asis || *sp != '\0') {
                asis = 0;
                tp = e.linep;
-               for (; *sp != '\0'; tp++)
-                       if ((*tp = *sp++) == ':') {
-                               asis = *sp == '\0';
+               for (; *sp != '\0'; tp++) {
+                       *tp = *sp++;
+                       if (*tp == ':') {
+                               asis = (*sp == '\0');
                                break;
                        }
+               }
                if (tp != e.linep)
                        *tp++ = '/';
                for (i = 0; (*tp++ = c[i++]) != '\0';);
@@ -3322,9 +3351,11 @@ static int dochdir(struct op *t)
        char *cp, *er;
 
        cp = t->words[1];
-       if (cp == NULL && (cp = homedir->value) == NULL)
-               er = ": no home directory";
-       else if (chdir(cp) < 0)
+       if (cp == NULL) {
+               cp = homedir->value;
+               if (cp == NULL)
+                       er = ": no home directory";
+       } else if (chdir(cp) < 0)
                er = ": bad directory";
        else
                return 0;
@@ -3380,6 +3411,7 @@ static int doumask(struct op *t)
                        putc('0' + ((i >> n) & 07), stderr);
                putc('\n', stderr);
        } else {
+/* huh??? '8','9' are not allowed! */
                for (n = 0; *cp >= '0' && *cp <= '9'; cp++)
                        n = n * 8 + (*cp - '0');
                umask(n);
@@ -3420,9 +3452,8 @@ static int dodot(struct op *t)
        if (cp == NULL) {
                DBGPRINTF(("DODOT: bad args, ret 0\n"));
                return 0;
-       } else {
-               DBGPRINTF(("DODOT: cp is %s\n", cp));
        }
+       DBGPRINTF(("DODOT: cp is %s\n", cp));
 
        sp = any('/', cp) ? ":" : path->value;
 
@@ -3452,8 +3483,7 @@ static int dodot(struct op *t)
 
                        return exstat;
                }
-
-       }                                                       /* While */
+       } /* while */
 
        prs(cp);
        err(": not found");
@@ -3490,13 +3520,13 @@ static int doread(struct op *t)
        for (wp = t->words + 1; *wp; wp++) {
                for (cp = e.linep; !nl && cp < elinep - 1; cp++) {
                        nb = read(0, cp, sizeof(*cp));
-                       if (nb != sizeof(*cp) || (nl = (*cp == '\n'))
-                        || (wp[1] && any(*cp, ifs->value))
-                       ) {
+                       if (nb != sizeof(*cp))
+                               break;
+                       nl = (*cp == '\n');
+                       if (nl || (wp[1] && any(*cp, ifs->value)))
                                break;
-                       }
                }
-               *cp = 0;
+               *cp = '\0';
                if (nb <= 0)
                        break;
                setval(lookup(*wp), e.linep);
@@ -3609,7 +3639,8 @@ static int brkcontin(char *cp, int val)
        if (nl <= 0)
                nl = 999;
        do {
-               if ((bc = brklist) == NULL)
+               bc = brklist;
+               if (bc == NULL)
                        break;
                brklist = bc->nextlev;
        } while (--nl);
@@ -3627,7 +3658,8 @@ static int doexit(struct op *t)
        char *cp;
 
        execflg = 0;
-       if ((cp = t->words[1]) != NULL)
+       cp = t->words[1];
+       if (cp != NULL)
                setstatus(getn(cp));
 
        DBGPRINTF(("DOEXIT: calling leave(), t=%p\n", t));
@@ -3695,8 +3727,8 @@ static int doset(struct op *t)
                for (n = 0; (t->words[n] = t->words[n + 1]) != NULL; n++);
                if (*++cp == 0)
                        flag['x'] = flag['v'] = 0;
-               else
-                       for (; *cp; cp++)
+               else {
+                       for (; *cp; cp++) {
                                switch (*cp) {
                                case 'e':
                                        if (!interactive)
@@ -3708,6 +3740,8 @@ static int doset(struct op *t)
                                                flag[(int) *cp]++;
                                        break;
                                }
+                       }
+               }
                setdash();
        }
        if (t->words[1]) {
@@ -3738,7 +3772,7 @@ static void varput(char *s, int out)
 static int dotimes(struct op *t)
 {
        struct tms buf;
-       long int clk_tck = sysconf(_SC_CLK_TCK);
+       long clk_tck = sysconf(_SC_CLK_TCK);
 
        times(&buf);
        printf("%dm%fs %dm%fs\n%dm%fs %dm%fs\n",
@@ -3754,7 +3788,7 @@ static int dotimes(struct op *t)
 }
 
 
-static int (*inbuilt(char *s)) (struct op *) {
+static builtin_func_ptr inbuilt(char *s) {
        const struct builtincmd *bp;
 
        for (bp = builtincmds; bp->name != NULL; bp++)
@@ -3874,7 +3908,8 @@ static int expand(char *cp, struct wdblock **wbp, int f)
                *wbp = addword(cp, *wbp);
                return 1;
        }
-       if (newenv(setjmp(errpt = ev)) == 0) {
+       errpt = ev;
+       if (newenv(setjmp(errpt)) == 0) {
                PUSHIO(aword, cp, strchar);
                e.iobase = e.iop;
                while ((cp = blank(f)) && gflg == 0) {
@@ -3981,9 +4016,12 @@ static int subgetc(char ec, int quoted)
                        e.iop->task = XGRAVE;
                        goto again;
                }
-               if (c == '$' && (c = dollar(quoted)) == 0) {
-                       e.iop->task = XDOLL;
-                       goto again;
+               if (c == '$') {
+                       c = dollar(quoted);
+                       if (c == 0) {
+                               e.iop->task = XDOLL;
+                               goto again;
+                       }
                }
        }
        return c;
@@ -4051,11 +4089,12 @@ static int dollar(int quoted)
                        return 0;
                } else {                                /* trap the nasty ${=} */
                        s[0] = '1';
-                       s[1] = 0;
+                       s[1] = '\0';
                }
        }
        vp = lookup(s);
-       if ((dolp = vp->value) == null) {
+       dolp = vp->value;
+       if (dolp == null) {
                switch (c) {
                case '=':
                        if (isdigit(*s)) {
@@ -4313,8 +4352,7 @@ static struct wdblock *glob(char *cp, struct wdblock *wb)
                else if (!any(*pp & ~QUOTE, spcl))
                        *pp &= ~QUOTE;
        if (i != 0) {
-               for (cl = addword(scopy(cp), (struct wdblock *) 0); anyspcl(cl);
-                        cl = nl) {
+               for (cl = addword(scopy(cp), NULL); anyspcl(cl); cl = nl) {
                        nl = newword(cl->w_nword * 2);
                        for (i = 0; i < cl->w_nword; i++) {     /* for each argument */
                                for (pp = cl->w_words[i]; *pp; pp++)
@@ -4374,7 +4412,7 @@ static void globname(char *we, char *pp)
                /* XXX Hmmm... What this could be? (abial) */
                /*
                   if (ent[j].d_ino == 0)
-                  continue;
+                     continue;
                 */
                strncpy(dname, de->d_name, NAME_MAX);
                if (dname[0] == '.')
@@ -4409,8 +4447,7 @@ static char *generate(char *start1, char *end1, char *middle, char *end)
        char *p;
        char *op, *xp;
 
-       p = op =
-               space((int) (end1 - start1) + strlen(middle) + strlen(end) + 2);
+       p = op = space((int)(end1 - start1) + strlen(middle) + strlen(end) + 2);
        for (xp = start1; xp != end1;)
                *op++ = *xp++;
        for (xp = middle; (*op++ = *xp++) != '\0';);
@@ -4518,7 +4555,8 @@ static void glob1(char *base, char *lim)
                if (i < lptr) {
                        c = (*func) (i, lptr);
                        if (c == 0) {
-                               glob2(i, lptr -= v2);
+                               lptr -= v2;
+                               glob2(i, lptr);
                                continue;
                        }
                        if (c < 0) {
@@ -4531,13 +4569,15 @@ static void glob1(char *base, char *lim)
                if (j > hptr) {
                        c = (*func) (hptr, j);
                        if (c == 0) {
-                               glob2(hptr += v2, j);
+                               hptr += v2;
+                               glob2(hptr, j);
                                goto begin;
                        }
                        if (c > 0) {
                                if (i == lptr) {
-                                       glob3(i, hptr += v2, j);
-                                       i = lptr += v2;
+                                       hptr += v2;
+                                       glob3(i, hptr, j);
+                                       i = (lptr += v2);
                                        goto begin;
                                }
                                glob2(i, j);
@@ -4561,9 +4601,9 @@ static void glob1(char *base, char *lim)
                        goto top;
                }
 
-
-               glob3(j, lptr -= v2, i);
-               j = hptr -= v2;
+               lptr -= v2;
+               glob3(j, lptr, i);
+               j = (hptr -= v2);
        }
 }
 
@@ -4651,37 +4691,39 @@ static int readc(void)
                if (c != '\0') {
                        e.iop->peekc = 0;
                        return c;
-               } else {
-                       if (e.iop->prev != 0) {
-                               if ((c = (*e.iop->iofn) (e.iop->argp, e.iop)) != '\0') {
-                                       if (c == -1) {
-                                               e.iop++;
-                                               continue;
-                                       }
-                                       if (e.iop == iostack)
-                                               ioecho(c);
-                                       return (e.iop->prev = c);
-                               } else if (e.iop->task == XIO && e.iop->prev != '\n') {
-                                       e.iop->prev = 0;
-                                       if (e.iop == iostack)
-                                               ioecho('\n');
-                                       return '\n';
+               }
+               if (e.iop->prev != 0) {
+                       c = (*e.iop->iofn)(e.iop->argp, e.iop);
+                       if (c != '\0') {
+                               if (c == -1) {
+                                       e.iop++;
+                                       continue;
                                }
+                               if (e.iop == iostack)
+                                       ioecho(c);
+                               e.iop->prev = c;
+                               return e.iop->prev;
                        }
-                       if (e.iop->task == XIO) {
-                               if (multiline) {
-                                       return e.iop->prev = 0;
-                               }
-                               if (interactive && e.iop == iostack + 1) {
+                       if (e.iop->task == XIO && e.iop->prev != '\n') {
+                               e.iop->prev = 0;
+                               if (e.iop == iostack)
+                                       ioecho('\n');
+                               return '\n';
+                       }
+               }
+               if (e.iop->task == XIO) {
+                       if (multiline) {
+                               e.iop->prev = 0;
+                               return e.iop->prev;
+                       }
+                       if (interactive && e.iop == iostack + 1) {
 #if ENABLE_FEATURE_EDITING
-                                       current_prompt = prompt->value;
+                               current_prompt = prompt->value;
 #else
-                                       prs(prompt->value);
+                               prs(prompt->value);
 #endif
-                               }
                        }
                }
-
        }                                                       /* FOR */
 
        if (e.iop >= iostack) {
@@ -4764,8 +4806,6 @@ static void pushio(struct ioarg *argp, int (*fn) (struct ioarg *))
                e.iop->task = XGRAVE;
        else
                e.iop->task = XOTHER;
-
-       return;
 }
 
 static struct io *setbase(struct io *ip)
@@ -4790,7 +4830,8 @@ static int nlchar(struct ioarg *ap)
 
        if (ap->aword == NULL)
                return 0;
-       if ((c = *ap->aword++) == 0) {
+       c = *ap->aword++;
+       if (c == 0) {
                ap->aword = NULL;
                return '\n';
        }
@@ -4891,7 +4932,6 @@ static int filechar(struct ioarg *ap)
                                lseek(ap->afile, ap->afpos, SEEK_SET);
 
                        i = safe_read(ap->afile, bp->buf, sizeof(bp->buf));
-
                        if (i <= 0) {
                                closef(ap->afile);
                                return 0;
@@ -4918,12 +4958,10 @@ static int filechar(struct ioarg *ap)
                c = mycommand[position];
                position++;
                return c;
-       } else
-#endif
-       {
-               i = safe_read(ap->afile, &c, sizeof(c));
-               return i == sizeof(c) ? (c & 0x7f) : (closef(ap->afile), 0);
        }
+#endif
+       i = safe_read(ap->afile, &c, sizeof(c));
+       return i == sizeof(c) ? (c & 0x7f) : (closef(ap->afile), 0);
 }
 
 /*
@@ -4935,10 +4973,9 @@ static int herechar(struct ioarg *ap)
 
        if (read(ap->afile, &c, sizeof(c)) != sizeof(c)) {
                close(ap->afile);
-               c = 0;
+               c = '\0';
        }
        return c;
-
 }
 
 /*
@@ -5087,7 +5124,7 @@ static void markhere(char *s, struct ioword *iop)
        DBGPRINTF7(("MARKHERE: enter, s=%p\n", s));
 
        h = (struct here *) space(sizeof(struct here));
-       if (h == 0)
+       if (h == NULL)
                return;
 
        h->h_tag = evalstr(s, DOSUB);
@@ -5099,18 +5136,21 @@ static void markhere(char *s, struct ioword *iop)
        h->h_next = NULL;
        if (inhere == 0)
                inhere = h;
-       else
-               for (lh = inhere; lh != NULL; lh = lh->h_next)
+       else {
+               for (lh = inhere; lh != NULL; lh = lh->h_next) {
                        if (lh->h_next == 0) {
                                lh->h_next = h;
                                break;
                        }
+               }
+       }
        iop->io_flag |= IOHERE | IOXHERE;
-       for (s = h->h_tag; *s; s++)
+       for (s = h->h_tag; *s; s++) {
                if (*s & QUOTE) {
                        iop->io_flag &= ~IOXHERE;
                        *s &= ~QUOTE;
                }
+       }
        h->h_dosub = iop->io_flag & IOXHERE;
 }
 
@@ -5218,7 +5258,8 @@ static int herein(char *hname, int xdoll)
                tf = mkstemp(tname);
                if (tf < 0)
                        return -1;
-               if (newenv(setjmp(errpt = ev)) == 0) {
+               errpt = ev;
+               if (newenv(setjmp(errpt)) == 0) {
                        PUSHIO(afile, hf, herechar);
                        setbase(e.iop);
                        while ((c = subgetc(0, 0)) != 0) {
@@ -5232,8 +5273,8 @@ static int herein(char *hname, int xdoll)
                tf = open(tname, 0);
                unlink(tname);
                return tf;
-       } else
-               return hf;
+       }
+       return hf;
 }
 
 static void scraphere(void)
@@ -5270,7 +5311,6 @@ static void freehere(int area)
 }
 
 
-
 /*
  * Copyright (c) 1987,1997, Prentice Hall
  * All rights reserved.