ash: de-obfuscate code, add 'static' keyword, etc.
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 18 Feb 2007 19:56:41 +0000 (19:56 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 18 Feb 2007 19:56:41 +0000 (19:56 -0000)
shell/ash.c

index 981532120930cb398748b1473b86277c1f21f43d..c1b5841dd027cdf21c546a17bcdee95538b44ad9 100644 (file)
@@ -203,7 +203,8 @@ static volatile sig_atomic_t pendingsigs;
 #define RESTOREINT(v) \
        ({ \
                xbarrier(); \
-               if ((suppressint = (v)) == 0 && intpending) onint(); \
+               suppressint = (v); \
+               if (suppressint == 0 && intpending) onint(); \
                0; \
        })
 #define EXSIGON() \
@@ -1570,7 +1571,8 @@ static int varcmp(const char *, const char *);
 static struct var **hashvar(const char *);
 
 
-static int varequal(const char *a, const char *b) {
+static int varequal(const char *a, const char *b)
+{
        return !varcmp(a, b);
 }
 
@@ -1837,7 +1839,8 @@ static char *stnputs(const char *, size_t, char *);
 static char *stputs(const char *, char *);
 
 
-static char *_STPUTC(int c, char *p) {
+static char *_STPUTC(int c, char *p)
+{
        if (p == sstrend)
                p = growstackstr();
        *p++ = c;
@@ -2049,7 +2052,6 @@ static int is_safe_applet(char *name)
  * This routine is called when an error or an interrupt occurs in an
  * interactive shell and control is returned to the main command loop.
  */
-
 static void
 reset(void)
 {
@@ -2176,8 +2178,10 @@ aliascmd(int argc, char **argv)
                return 0;
        }
        while ((n = *++argv) != NULL) {
-               if ((v = strchr(n+1, '=')) == NULL) { /* n+1: funny ksh stuff */
-                       if ((ap = *__lookupalias(n)) == NULL) {
+               v = strchr(n+1, '=');
+               if (v == NULL) { /* n+1: funny ksh stuff */
+                       ap = *__lookupalias(n);
+                       if (ap == NULL) {
                                fprintf(stderr, "%s: %s not found\n", "alias", n);
                                ret = 1;
                        } else
@@ -2317,7 +2321,7 @@ cdcmd(int argc, char **argv)
                goto step7;
        if (*dest == '.') {
                c = dest[1];
-dotdot:
+ dotdot:
                switch (c) {
                case '\0':
                case '/':
@@ -2330,9 +2334,10 @@ dotdot:
        }
        if (!*dest)
                dest = ".";
-       if (!(path = bltinlookup("CDPATH"))) {
-step6:
-step7:
+       path = bltinlookup("CDPATH");
+       if (!path) {
+ step6:
+ step7:
                p = dest;
                goto docd;
        }
@@ -2342,7 +2347,7 @@ step7:
                if (stat(p, &statb) >= 0 && S_ISDIR(statb.st_mode)) {
                        if (c && c != ':')
                                flags |= CD_PRINT;
-docd:
+ docd:
                        if (!docd(p, flags))
                                goto out;
                        break;
@@ -2350,7 +2355,7 @@ docd:
        } while (path);
        sh_error("can't cd to %s", dest);
        /* NOTREACHED */
-out:
+ out:
        if (flags & CD_PRINT)
                out1fmt(snlfmt, curdir);
        return 0;
@@ -2361,7 +2366,6 @@ out:
  * Update curdir (the name of the current directory) in response to a
  * cd command.
  */
-
 static const char * updatepwd(const char *dir)
 {
        char *new;
@@ -2418,11 +2422,11 @@ static const char * updatepwd(const char *dir)
        return stackblock();
 }
 
+
 /*
  * Actually do the chdir.  We also call hashcd to let the routines in exec.c
  * know that the current directory has changed.
  */
-
 static int
 docd(const char *dest, int flags)
 {
@@ -2442,7 +2446,7 @@ docd(const char *dest, int flags)
                goto out;
        setpwd(dir, 1);
        hashcd();
-out:
+ out:
        INTON;
        return err;
 }
@@ -2522,7 +2526,6 @@ static void exverror(int, const char *, va_list) ATTRIBUTE_NORETURN;
  * just do a longjmp to the exception handler.  The type of exception is
  * stored in the global variable "exception".
  */
-
 static void
 exraise(int e)
 {
@@ -2544,7 +2547,6 @@ exraise(int e)
  * are held using the INTOFF macro.  (The test for iflag is just
  * defensive programming.)
  */
-
 static void
 onint(void) {
        int i;
@@ -2626,10 +2628,10 @@ exerror(int cond, const char *msg, ...)
        va_end(ap);
 }
 
+
 /*
  * error/warning routines for external builtins
  */
-
 static void
 sh_warnx(const char *fmt, ...)
 {
@@ -2646,7 +2648,6 @@ sh_warnx(const char *fmt, ...)
  * pointer to a static buffer that will be overwritten on the next call.
  * Action describes the operation that got the error.
  */
-
 static const char *
 errmsg(int e, const char *em)
 {
@@ -2694,7 +2695,6 @@ static const struct builtincmd bltin = {
 /*
  * The eval command.
  */
-
 static int
 evalcmd(int argc, char **argv)
 {
@@ -2709,7 +2709,8 @@ evalcmd(int argc, char **argv)
                        ap = argv + 2;
                        for (;;) {
                                concat = stputs(p, concat);
-                               if ((p = *ap++) == NULL)
+                               p = *ap++;
+                               if (p == NULL)
                                        break;
                                STPUTC(' ', concat);
                        }
@@ -2726,7 +2727,6 @@ evalcmd(int argc, char **argv)
 /*
  * Execute a command or commands contained in a string.
  */
-
 static int
 evalstring(char *s, int mask)
 {
@@ -2757,7 +2757,6 @@ evalstring(char *s, int mask)
  * Evaluate a parse tree.  The value is left in the global variable
  * exitstatus.
  */
-
 static void
 evaltree(union node *n, int flags)
 {
@@ -2793,7 +2792,7 @@ evaltree(union node *n, int flags)
                goto setstatus;
        case NCMD:
                evalfn = evalcommand;
-checkexit:
+ checkexit:
                if (eflag && !(flags & EV_TESTED))
                        checkexit = ~0;
                goto calleval;
@@ -2832,9 +2831,9 @@ checkexit:
                        break;
                if (!evalskip) {
                        n = n->nbinary.ch2;
-evaln:
+ evaln:
                        evalfn = evaltree;
-calleval:
+ calleval:
                        evalfn(n, flags);
                        break;
                }
@@ -2853,20 +2852,20 @@ calleval:
                goto success;
        case NDEFUN:
                defun(n->narg.text, n->narg.next);
-success:
+ success:
                status = 0;
-setstatus:
+ setstatus:
                exitstatus = status;
                break;
        }
-out:
+ out:
        if ((checkexit & exitstatus))
                evalskip |= SKIPEVAL;
        else if (pendingsigs && dotrap())
                goto exexit;
 
        if (flags & EV_EXIT) {
-exexit:
+ exexit:
                exraise(EXEXIT);
        }
 }
@@ -2891,7 +2890,8 @@ evalloop(union node *n, int flags)
 
                evaltree(n->nbinary.ch1, EV_TESTED);
                if (evalskip) {
-skipping:         if (evalskip == SKIPCONT && --skipcount <= 0) {
+ skipping:
+                       if (evalskip == SKIPCONT && --skipcount <= 0) {
                                evalskip = 0;
                                continue;
                        }
@@ -2949,12 +2949,11 @@ evalfor(union node *n, int flags)
                }
        }
        loopnest--;
-out:
+ out:
        popstackmark(&smark);
 }
 
 
-
 static void
 evalcase(union node *n, int flags)
 {
@@ -2977,7 +2976,7 @@ evalcase(union node *n, int flags)
                        }
                }
        }
-out:
+ out:
        popstackmark(&smark);
 }
 
@@ -2985,7 +2984,6 @@ out:
 /*
  * Kick off a subshell to evaluate a tree.
  */
-
 static void
 evalsubshell(union node *n, int flags)
 {
@@ -3019,7 +3017,6 @@ nofork:
 /*
  * Compute the names of the files in a redirection list.
  */
-
 static void
 expredir(union node *n)
 {
@@ -3059,7 +3056,6 @@ expredir(union node *n)
  * of the shell, which make the last process in a pipeline the parent
  * of all the rest.)
  */
-
 static void
 evalpipe(union node *n, int flags)
 {
@@ -3121,7 +3117,6 @@ evalpipe(union node *n, int flags)
  * we fork off a subprocess and get the output of the command via a pipe.
  * Should be called with interrupts off.
  */
-
 static void
 evalbackcmd(union node *n, struct backcmd *result)
 {
@@ -3162,7 +3157,7 @@ evalbackcmd(union node *n, struct backcmd *result)
                result->jp = jp;
        }
        herefd = saveherefd;
-out:
+ out:
        TRACE(("evalbackcmd done: fd=%d buf=0x%x nleft=%d jp=0x%x\n",
                result->fd, result->buf, result->nleft, result->jp));
 }
@@ -3178,7 +3173,8 @@ static char ** parse_command_args(char **argv, const char **path)
                        return 0;
                if (*cp++ != '-')
                        break;
-               if (!(c = *cp++))
+               c = *cp++;
+               if (!c)
                        break;
                if (c == '-' && !*cp) {
                        argv++;
@@ -3216,7 +3212,6 @@ static const char *expandstr(const char *ps);
 /*
  * Execute a simple command.
  */
-
 static void
 evalcommand(union node *cmd, int flags)
 {
@@ -3369,7 +3364,7 @@ evalcommand(union node *cmd, int flags)
                /* We have a redirection error. */
                if (spclbltin > 0)
                        exraise(EXERROR);
-bail:
+ bail:
                exitstatus = status;
                goto out;
        }
@@ -3423,7 +3418,7 @@ bail:
                        exitstatus = exit_status;
 
                        if (i == EXINT || spclbltin > 0) {
-raise:
+ raise:
                                longjmp(handler->loc, 1);
                        }
                        FORCEINTON;
@@ -3437,7 +3432,7 @@ raise:
                break;
        }
 
-out:
+ out:
        popredir(cmd_is_exec);
        if (lastarg)
                /* dsl: I think this is intended to be used to support
@@ -3449,14 +3444,16 @@ out:
 }
 
 static int
-evalbltin(const struct builtincmd *cmd, int argc, char **argv) {
+evalbltin(const struct builtincmd *cmd, int argc, char **argv)
+{
        char *volatile savecmdname;
        struct jmploc *volatile savehandler;
        struct jmploc jmploc;
        int i;
 
        savecmdname = commandname;
-       if ((i = setjmp(jmploc.loc)))
+       i = setjmp(jmploc.loc);
+       if (i)
                goto cmddone;
        savehandler = handler;
        handler = &jmploc;
@@ -3465,7 +3462,7 @@ evalbltin(const struct builtincmd *cmd, int argc, char **argv) {
        optptr = NULL;                  /* initialize nextopt */
        exitstatus = (*cmd->builtin)(argc, argv);
        flushall();
-cmddone:
+ cmddone:
        exitstatus |= ferror(stdout);
        clearerr(stdout);
        commandname = savecmdname;
@@ -3486,7 +3483,8 @@ evalfun(struct funcnode *func, int argc, char **argv, int flags)
 
        saveparam = shellparam;
        savelocalvars = localvars;
-       if ((e = setjmp(jmploc.loc))) {
+       e = setjmp(jmploc.loc);
+       if (e) {
                goto funcdone;
        }
        INTOFF;
@@ -3524,13 +3522,13 @@ static int goodname(const char *p)
        return !*endofname(p);
 }
 
+
 /*
  * Search for a command.  This is called before we fork so that the
  * location of the command will be available in the parent as well as
  * the child.  The check for "goodname" is an overly conservative
  * check that the name will not be subject to expansion.
  */
-
 static void
 prehash(union node *n)
 {
@@ -3550,7 +3548,6 @@ prehash(union node *n)
 /*
  * No command given.
  */
-
 static int
 bltincmd(int argc, char **argv)
 {
@@ -3593,7 +3590,6 @@ breakcmd(int argc, char **argv)
 /*
  * The return command.
  */
-
 static int
 returncmd(int argc, char **argv)
 {
@@ -3648,7 +3644,6 @@ execcmd(int argc, char **argv)
 #define ARB 1                   /* actual size determined at run time */
 
 
-
 struct tblentry {
        struct tblentry *next;  /* next entry in hash chain */
        union param param;      /* definition of builtin function */
@@ -3750,7 +3745,7 @@ tryexec(char *cmd, char **argv, char **envp)
        }
 #endif
 
-repeat:
+ repeat:
 #ifdef SYSV
        do {
                execve(cmd, argv, envp);
@@ -3779,7 +3774,6 @@ repeat:
 }
 
 
-
 /*
  * Do a path search.  The variable path (passed by reference) should be
  * set to the start of the path before the first call; padvance will update
@@ -3789,7 +3783,6 @@ repeat:
  * pathopt will be set to point to it; otherwise pathopt will be set to
  * NULL.
  */
-
 static char *
 padvance(const char **path, const char *name)
 {
@@ -3868,7 +3861,8 @@ hashcmd(int argc, char **argv)
        }
        c = 0;
        while ((name = *argptr) != NULL) {
-               if ((cmdp = cmdlookup(name, 0)) != NULL
+               cmdp = cmdlookup(name, 0);
+               if (cmdp != NULL
                 && (cmdp->cmdtype == CMDNORMAL
                     || (cmdp->cmdtype == CMDBUILTIN && builtinloc >= 0)))
                        delete_cmd_entry();
@@ -3885,7 +3879,6 @@ hashcmd(int argc, char **argv)
  * Resolve a command name.  If you change this routine, you may have to
  * change the shellexec routine as well.
  */
-
 static void
 find_command(char *name, struct cmdentry *entry, int act, const char *path)
 {
@@ -3937,7 +3930,8 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
        }
 
        /* If name is in the table, check answer will be ok */
-       if ((cmdp = cmdlookup(name, 0)) != NULL) {
+       cmdp = cmdlookup(name, 0);
+       if (cmdp != NULL) {
                int bit;
 
                switch (cmdp->cmdtype) {
@@ -3981,7 +3975,7 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
 
        e = ENOENT;
        idx = -1;
-loop:
+ loop:
        while ((fullname = padvance(&path, name)) != NULL) {
                stunalloc(fullname);
                idx++;
@@ -4020,8 +4014,8 @@ loop:
                if (pathopt) {          /* this is a %func directory */
                        stalloc(strlen(fullname) + 1);
                        readcmdfile(fullname);
-                       if ((cmdp = cmdlookup(name, 0)) == NULL ||
-                           cmdp->cmdtype != CMDFUNCTION)
+                       cmdp = cmdlookup(name, 0);
+                       if (cmdp == NULL || cmdp->cmdtype != CMDFUNCTION)
                                sh_error("%s not defined in %s", name, fullname);
                        stunalloc(fullname);
                        goto success;
@@ -4048,7 +4042,7 @@ loop:
        entry->cmdtype = CMDUNKNOWN;
        return;
 
-builtin_success:
+ builtin_success:
        if (!updatetbl) {
                entry->cmdtype = CMDBUILTIN;
                entry->u.cmd = bcmd;
@@ -4059,7 +4053,7 @@ builtin_success:
        cmdp->cmdtype = CMDBUILTIN;
        cmdp->param.cmd = bcmd;
        INTON;
-success:
+ success:
        cmdp->rehash = 0;
        entry->cmdtype = cmdp->cmdtype;
        entry->u = cmdp->param;
@@ -4074,10 +4068,10 @@ static int pstrcmp(const void *a, const void *b)
        return strcmp((const char *) a, (*(const char *const *) b) + 1);
 }
 
+
 /*
  * Search the table of builtin commands.
  */
-
 static struct builtincmd *
 find_builtin(const char *name)
 {
@@ -4095,7 +4089,6 @@ find_builtin(const char *name)
  * Called when a cd is done.  Marks all commands so the next time they
  * are executed they will be rehashed.
  */
-
 static void
 hashcd(void)
 {
@@ -4121,7 +4114,6 @@ hashcd(void)
  * pathval() still returns the old value at this point.
  * Called with interrupts off.
  */
-
 static void
 changepath(const char *newval)
 {
@@ -4165,7 +4157,6 @@ changepath(const char *newval)
  * Clear out command entries.  The argument specifies the first entry in
  * PATH which has changed.
  */
-
 static void
 clearcmdentry(int firstchange)
 {
@@ -4193,7 +4184,6 @@ clearcmdentry(int firstchange)
 }
 
 
-
 /*
  * Locate a command in the command hash table.  If "add" is nonzero,
  * add the command to the table if it is not already present.  The
@@ -4203,10 +4193,8 @@ clearcmdentry(int firstchange)
  *
  * Interrupts must be off if called with add != 0.
  */
-
 static struct tblentry **lastcmdentry;
 
-
 static struct tblentry *
 cmdlookup(const char *name, int add)
 {
@@ -4237,10 +4225,10 @@ cmdlookup(const char *name, int add)
        return cmdp;
 }
 
+
 /*
  * Delete the command entry returned on the last lookup.
  */
-
 static void
 delete_cmd_entry(void)
 {
@@ -4260,7 +4248,6 @@ delete_cmd_entry(void)
  * Add a new command entry, replacing any existing command entry for
  * the same name - except special builtins.
  */
-
 static void addcmdentry(char *name, struct cmdentry *entry)
 {
        struct tblentry *cmdp;
@@ -4274,10 +4261,10 @@ static void addcmdentry(char *name, struct cmdentry *entry)
        cmdp->rehash = 0;
 }
 
+
 /*
  * Make a copy of a parse tree.
  */
-
 static struct funcnode * copyfunc(union node *n)
 {
        struct funcnode *f;
@@ -4295,10 +4282,10 @@ static struct funcnode * copyfunc(union node *n)
        return f;
 }
 
+
 /*
  * Define a shell function.
  */
-
 static void
 defun(char *name, union node *func)
 {
@@ -4315,7 +4302,6 @@ defun(char *name, union node *func)
 /*
  * Delete a function if it exists.
  */
-
 static void
 unsetfunc(const char *name)
 {
@@ -4329,8 +4315,6 @@ unsetfunc(const char *name)
 /*
  * Locate and print what a word is...
  */
-
-
 #if ENABLE_ASH_CMDCMD
 static int
 describe_command(char *command, int describe_command_verbose)
@@ -4359,7 +4343,8 @@ describe_command(char *command)
 
 #if ENABLE_ASH_ALIAS
        /* Then look at the aliases */
-       if ((ap = lookupalias(command, 0)) != NULL) {
+       ap = lookupalias(command, 0);
+       if (ap != NULL) {
                if (describe_command_verbose) {
                        out1fmt(" is an alias for %s", ap->val);
                } else {
@@ -4371,7 +4356,8 @@ describe_command(char *command)
        }
 #endif
        /* Then check if it is a tracked alias */
-       if ((cmdp = cmdlookup(command, 0)) != NULL) {
+       cmdp = cmdlookup(command, 0);
+       if (cmdp != NULL) {
                entry.cmdtype = cmdp->cmdtype;
                entry.u = cmdp->param;
        } else {
@@ -4426,8 +4412,7 @@ describe_command(char *command)
                }
                return 127;
        }
-
-out:
+ out:
        outstr("\n", stdout);
        return 0;
 }
@@ -4543,7 +4528,8 @@ static void varunset(const char *, const char *, const char *, int)
  * Returns an stalloced string.
  */
 
-static char * preglob(const char *pattern, int quoted, int flag) {
+static char * preglob(const char *pattern, int quoted, int flag)
+{
        flag |= RMESCAPE_GLOB;
        if (quoted) {
                flag |= RMESCAPE_QUOTED;
@@ -4581,8 +4567,7 @@ static void expandhere(union node *arg, int fd)
  * perform splitting and file name expansion.  When arglist is NULL, perform
  * here document expansion.
  */
-
-void
+static void
 expandarg(union node *arg, struct arglist *arglist, int flag)
 {
        struct strlist *sp;
@@ -4631,7 +4616,6 @@ expandarg(union node *arg, struct arglist *arglist, int flag)
  * characters to allow for further processing.  Otherwise treat
  * $@ like $* since no splitting will be performed.
  */
-
 static void
 argstr(char *p, int flag)
 {
@@ -4668,14 +4652,14 @@ argstr(char *p, int flag)
                char *q;
 
                flag &= ~EXP_TILDE;
-tilde:
+ tilde:
                q = p;
                if (*q == CTLESC && (flag & EXP_QWORD))
                        q++;
                if (*q == '~')
                        p = exptilde(p, q, flag);
        }
-start:
+ start:
        startloc = expdest - (char *)stackblock();
        for (;;) {
                length += strcspn(p + length, reject);
@@ -4739,7 +4723,7 @@ start:
                                goto start;
                        }
                        inquotes = !inquotes;
-addquote:
+ addquote:
                        if (quotes) {
                                p--;
                                length++;
@@ -4767,7 +4751,7 @@ addquote:
 #endif
                }
        }
-breakloop:
+ breakloop:
        ;
 }
 
@@ -4798,12 +4782,13 @@ exptilde(char *startp, char *p, int flag)
                        goto done;
                }
        }
-done:
+ done:
        *p = '\0';
        if (*name == '\0') {
                home = lookupvar(homestr);
        } else {
-               if ((pw = getpwnam(name)) == NULL)
+               pw = getpwnam(name);
+               if (pw == NULL)
                        goto lose;
                home = pw->pw_dir;
        }
@@ -4814,7 +4799,7 @@ done:
        strtodest(home, SQSYNTAX, quotes);
        recordregion(startloc, expdest - (char *)stackblock(), 0);
        return p;
-lose:
+ lose:
        *p = c;
        return startp;
 }
@@ -4922,10 +4907,10 @@ expari(int quotes)
 }
 #endif
 
+
 /*
  * Expand stuff in backwards quotes.
  */
-
 static void
 expbackq(union node *cmd, int quoted, int quotes)
 {
@@ -4952,7 +4937,7 @@ expbackq(union node *cmd, int quoted, int quotes)
                goto read;
        for (;;) {
                memtodest(p, i, syntax, quotes);
-read:
+ read:
                if (in.fd < 0)
                        break;
                i = safe_read(in.fd, buf, sizeof(buf));
@@ -5146,7 +5131,7 @@ evalvar(char *p, int flag)
        startloc = expdest - (char *)stackblock();
        p = strchr(p, '=') + 1;
 
-again:
+ again:
        varlen = varvalue(var, varflags, flag);
        if (varflags & VSNUL)
                varlen--;
@@ -5157,7 +5142,7 @@ again:
        }
 
        if (subtype == VSMINUS) {
-vsplus:
+ vsplus:
                if (varlen < 0) {
                        argstr(
                                p, flag | EXP_TILDE |
@@ -5199,7 +5184,7 @@ vsplus:
        if (subtype == VSNORMAL) {
                if (!easy)
                        goto end;
-record:
+ record:
                recordregion(startloc, expdest - (char *)stackblock(), quoted);
                goto end;
        }
@@ -5235,11 +5220,12 @@ record:
                goto record;
        }
 
-end:
+ end:
        if (subtype != VSNORMAL) {      /* skip to end of alternative */
                int nesting = 1;
                for (;;) {
-                       if ((c = *p++) == CTLESC)
+                       c = *p++;
+                       if (c == CTLESC)
                                p++;
                        else if (c == CTLBACKQ || c == (CTLBACKQ|CTLQUOTE)) {
                                if (varlen >= 0)
@@ -5260,7 +5246,6 @@ end:
 /*
  * Put a string on the stack.
  */
-
 static void
 memtodest(const char *p, size_t len, int syntax, int quotes) {
        char *q = expdest;
@@ -5290,7 +5275,6 @@ strtodest(const char *p, int syntax, int quotes)
 /*
  * Add the value of a specialized variable to the stack string.
  */
-
 static ssize_t
 varvalue(char *name, int varflags, int flags)
 {
@@ -5324,7 +5308,7 @@ varvalue(char *name, int varflags, int flags)
                num = backgndpid;
                if (num == 0)
                        return -1;
-numvar:
+ numvar:
                len = cvtnum(num);
                break;
        case '-':
@@ -5345,8 +5329,9 @@ numvar:
                sep = ifsset() ? SC2INT(ifsval()[0]) : ' ';
                if (quotes && (SIT(sep, syntax) == CCTL || SIT(sep, syntax) == CBACK))
                        sepq = 1;
-param:
-               if (!(ap = shellparam.p))
+ param:
+               ap = shellparam.p;
+               if (!ap)
                        return -1;
                while ((p = *ap++)) {
                        size_t partlen;
@@ -5389,7 +5374,7 @@ param:
                goto value;
        default:
                p = lookupvar(name);
-value:
+ value:
                if (!p)
                        return -1;
 
@@ -5409,7 +5394,6 @@ value:
  * Record the fact that we have to scan this region of the
  * string for IFS characters.
  */
-
 static void
 recordregion(int start, int end, int nulonly)
 {
@@ -5513,7 +5497,7 @@ ifsbreakup(char *string, struct arglist *arglist)
        if (!*start)
                return;
 
-add:
+ add:
        sp = (struct strlist *)stalloc(sizeof(*sp));
        sp->text = start;
        *arglist->lastp = sp;
@@ -5580,7 +5564,7 @@ expandmeta(struct strlist *str, int flag)
                        /*
                         * no matches
                         */
-nometa:
+ nometa:
                        *exparg.lastp = str;
                        rmescapes(str->text);
                        exparg.lastp = &str->next;
@@ -5595,10 +5579,10 @@ nometa:
        }
 }
 
+
 /*
  * Add a file name to the list.
  */
-
 static void
 addfname(const char *name)
 {
@@ -5614,7 +5598,6 @@ addfname(const char *name)
 /*
  * Do metacharacter (i.e. *, ?, [...]) expansion.
  */
-
 static void
 expmeta(char *enddir, char *name)
 {
@@ -5656,7 +5639,7 @@ expmeta(char *enddir, char *name)
                        start = p + 1;
                }
        }
-out:
+ out:
        if (metaflag == 0) {    /* we've reached the end of the file name */
                if (enddir != expdir)
                        metaflag++;
@@ -5687,7 +5670,8 @@ out:
                cp = expdir;
                enddir[-1] = '\0';
        }
-       if ((dirp = opendir(cp)) == NULL)
+       dirp = opendir(cp);
+       if (dirp == NULL)
                return;
        if (enddir != expdir)
                enddir[-1] = '/';
@@ -5723,12 +5707,12 @@ out:
                endname[-1] = '/';
 }
 
+
 /*
  * Sort the results of file name expansion.  It calculates the number of
  * strings to sort and then calls msort (short for merge sort) to do the
  * work.
  */
-
 static struct strlist *
 expsort(struct strlist *str)
 {
@@ -5771,14 +5755,16 @@ msort(struct strlist *list, int len)
                                                {
                        *lpp = p;
                        lpp = &p->next;
-                       if ((p = *lpp) == NULL) {
+                       p = *lpp;
+                       if (p == NULL) {
                                *lpp = q;
                                break;
                        }
                } else {
                        *lpp = q;
                        lpp = &q->next;
-                       if ((q = *lpp) == NULL) {
+                       q = *lpp;
+                       if (q == NULL) {
                                *lpp = p;
                                break;
                        }
@@ -5791,7 +5777,6 @@ msort(struct strlist *list, int len)
 /*
  * Returns true if the pattern matches the string.
  */
-
 static int patmatch(char *pattern, const char *string)
 {
        return pmatch(preglob(pattern, 0, 0), string);
@@ -5801,7 +5786,6 @@ static int patmatch(char *pattern, const char *string)
 /*
  * Remove any CTLESC characters from a string.
  */
-
 static char *
 _rmescapes(char *str, int flag)
 {
@@ -5855,7 +5839,7 @@ _rmescapes(char *str, int flag)
                        }
                }
                notescaped = globbing;
-copy:
+ copy:
                *q++ = *p++;
        }
        *q = '\0';
@@ -5870,8 +5854,7 @@ copy:
 /*
  * See if a pattern matches in a case statement.
  */
-
-int
+static int
 casematch(union node *pattern, char *val)
 {
        struct stackmark smark;
@@ -5888,10 +5871,10 @@ casematch(union node *pattern, char *val)
        return result;
 }
 
+
 /*
  * Our own itoa().
  */
-
 static int
 cvtnum(arith_t num)
 {
@@ -6043,7 +6026,7 @@ static int preadfd(void)
        char *buf =  parsefile->buf;
        parsenextc = buf;
 
-retry:
+ retry:
 #if ENABLE_FEATURE_EDITING
        if (!iflag || parsefile->fd)
                nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
@@ -6095,8 +6078,7 @@ retry:
  * 3) If the is more stuff in this buffer, use it else call read to fill it.
  * 4) Process input up to the next newline, deleting nul characters.
  */
-
-int
+static int
 preadbuffer(void)
 {
        char *q;
@@ -6120,8 +6102,9 @@ preadbuffer(void)
 
        more = parselleft;
        if (more <= 0) {
-again:
-               if ((more = preadfd()) <= 0) {
+ again:
+               more = preadfd();
+               if (more <= 0) {
                        parselleft = parsenleft = EOF_NLEFT;
                        return PEOF;
                }
@@ -6171,8 +6154,7 @@ again:
  * Undo the last call to pgetc.  Only one character may be pushed back.
  * PEOF may be pushed back.
  */
-
-void
+static void
 pungetc(void)
 {
        parsenleft++;
@@ -6183,7 +6165,7 @@ pungetc(void)
  * Push a string back onto the input at this current parsefile level.
  * We handle aliases this way.
  */
-void
+static void
 pushstring(char *s, void *ap)
 {
        struct strpush *sp;
@@ -6212,7 +6194,7 @@ pushstring(char *s, void *ap)
        INTON;
 }
 
-void
+static void
 popstring(void)
 {
        struct strpush *sp = parsefile->strpush;
@@ -6241,11 +6223,11 @@ popstring(void)
        INTON;
 }
 
+
 /*
  * Set the input to take input from a file.  If push is set, push the
  * old input onto the stack first.
  */
-
 static int
 setinputfile(const char *fname, int flags)
 {
@@ -6253,7 +6235,8 @@ setinputfile(const char *fname, int flags)
        int fd2;
 
        INTOFF;
-       if ((fd = open(fname, O_RDONLY)) < 0) {
+       fd = open(fname, O_RDONLY);
+       if (fd < 0) {
                if (flags & INPUT_NOFILE_OK)
                        goto out;
                sh_error("Can't open %s", fname);
@@ -6266,7 +6249,7 @@ setinputfile(const char *fname, int flags)
                fd = fd2;
        }
        setinputfd(fd, flags & INPUT_PUSH_FILE);
-out:
+ out:
        INTON;
        return fd;
 }
@@ -6276,7 +6259,6 @@ out:
  * Like setinputfile, but takes an open file descriptor.  Call this with
  * interrupts off.
  */
-
 static void
 setinputfd(int fd, int push)
 {
@@ -6296,7 +6278,6 @@ setinputfd(int fd, int push)
 /*
  * Like setinputfile, but takes input from a string.
  */
-
 static void
 setinputstring(char *string)
 {
@@ -6314,7 +6295,6 @@ setinputstring(char *string)
  * To handle the "." command, a stack of input files is used.  Pushfile
  * adds a new entry to the stack and popfile restores the previous level.
  */
-
 static void
 pushfile(void)
 {
@@ -6358,7 +6338,6 @@ popfile(void)
 /*
  * Return to top level.
  */
-
 static void
 popallfiles(void)
 {
@@ -6371,7 +6350,6 @@ popallfiles(void)
  * Close the file(s) that the shell is reading commands from.  Called
  * after a fork is done.
  */
-
 static void
 closescript(void)
 {
@@ -6484,8 +6462,7 @@ set_curjob(struct job *jp, unsigned mode)
  *
  * Called with interrupts off.
  */
-
-void
+static void
 setjobctl(int on)
 {
        int fd;
@@ -6511,8 +6488,9 @@ setjobctl(int on)
                        goto out;
                fcntl(fd, F_SETFD, FD_CLOEXEC);
                do { /* while we are in the background */
-                       if ((pgrp = tcgetpgrp(fd)) < 0) {
-out:
+                       pgrp = tcgetpgrp(fd);
+                       if (pgrp < 0) {
+ out:
                                sh_warnx("can't access tty; job control turned off");
                                mflag = on = 0;
                                goto close;
@@ -6538,7 +6516,7 @@ out:
                setsignal(SIGTSTP);
                setsignal(SIGTTOU);
                setsignal(SIGTTIN);
-close:
+ close:
                close(fd);
                fd = -1;
        }
@@ -6556,7 +6534,7 @@ killcmd(int argc, char **argv)
        struct job *jp;
 
        if (argc <= 1) {
-usage:
+ usage:
                sh_error(
 "Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or\n"
 "kill -l [exitstatus]"
@@ -6697,7 +6675,7 @@ restartjob(struct job *jp, int mode)
                        ps->status = -1;
                }
        } while (ps++, --i);
-out:
+ out:
        status = (mode == FORK_FG) ? waitforjob(jp) : 0;
        INTON;
        return status;
@@ -6738,8 +6716,7 @@ sprint_status(char *s, int status, int sigonly)
                else
                        col = fmtstr(s, 16, "Done");
        }
-
-out:
+ out:
        return col;
 }
 
@@ -6791,8 +6768,7 @@ showjob(FILE *out, struct job *jp, int mode)
        do {
                /* for each process */
                col = fmtstr(s, 48, " |\n%*c%d ", indent, ' ', ps->pid) - 3;
-
-start:
+ start:
                fprintf(out, "%s%*c%s",
                        s, 33 - col >= 0 ? 33 - col : 0, ' ', ps->cmd
                );
@@ -6845,7 +6821,6 @@ jobscmd(int argc, char **argv)
  * Print a list of jobs.  If "change" is nonzero, only print jobs whose
  * statuses have changed since the last call to showjobs.
  */
-
 static void
 showjobs(FILE *out, int mode)
 {
@@ -6864,10 +6839,10 @@ showjobs(FILE *out, int mode)
 }
 #endif /* JOBS */
 
+
 /*
  * Mark a job structure as unused.
  */
-
 static void
 freejob(struct job *jp)
 {
@@ -6928,7 +6903,7 @@ waitcmd(int argc, char **argv)
                                if (job->ps[job->nprocs - 1].pid == pid)
                                        break;
                                job = job->prev_job;
-start:
+ start:
                                if (!job)
                                        goto repeat;
                        } while (1);
@@ -6939,11 +6914,11 @@ start:
                        dowait(DOWAIT_BLOCK, 0);
                job->waited = 1;
                retval = getstatus(job);
-repeat:
+ repeat:
                ;
        } while (*++argv);
 
-out:
+ out:
        return retval;
 }
 
@@ -6951,7 +6926,6 @@ out:
 /*
  * Convert a job name to a job structure.
  */
-
 static struct job *
 getjob(const char *name, int getctl)
 {
@@ -6977,14 +6951,14 @@ getjob(const char *name, int getctl)
 
        if (!p[1]) {
                if (c == '+' || c == '%') {
-currentjob:
+ currentjob:
                        err_msg = "No current job";
                        goto check;
                } else if (c == '-') {
                        if (jp)
                                jp = jp->prev_job;
                        err_msg = "No previous job";
-check:
+ check:
                        if (!jp)
                                goto err;
                        goto gotit;
@@ -7020,14 +6994,14 @@ check:
                jp = jp->prev_job;
        }
 
-gotit:
+ gotit:
 #if JOBS
        err_msg = "job %s not created under job control";
        if (getctl && jp->jobctl == 0)
                goto err;
 #endif
        return jp;
-err:
+ err:
        sh_error(err_msg, name);
 }
 
@@ -7136,7 +7110,6 @@ growjobtab(void)
  *
  * Called with interrupts off.
  */
-
 static void forkchild(struct job *jp, union node *n, int mode)
 {
        int oldlvl;
@@ -7240,6 +7213,7 @@ forkshell(struct job *jp, union node *n, int mode)
        return pid;
 }
 
+
 /*
  * Wait for job to finish.
  *
@@ -7260,8 +7234,7 @@ forkshell(struct job *jp, union node *n, int mode)
  *
  * Called with interrupts off.
  */
-
-int
+static int
 waitforjob(struct job *jp)
 {
        int st;
@@ -7320,7 +7293,6 @@ waitforjob(struct job *jp)
  * (as opposed to running a builtin command or just typing return),
  * and the jobs command may give out of date information.
  */
-
 static int waitproc(int block, int *status)
 {
        int flags = 0;
@@ -7334,10 +7306,10 @@ static int waitproc(int block, int *status)
        return wait3(status, flags, (struct rusage *)NULL);
 }
 
+
 /*
  * Wait for a process to terminate.
  */
-
 static int
 dowait(int block, struct job *job)
 {
@@ -7391,7 +7363,7 @@ dowait(int block, struct job *job)
                jobless--;
        goto out;
 
-gotjob:
+ gotjob:
        if (state != JOBRUNNING) {
                thisjob->changed = 1;
 
@@ -7407,7 +7379,7 @@ gotjob:
                }
        }
 
-out:
+ out:
        INTON;
 
        if (thisjob && thisjob == job) {
@@ -7428,7 +7400,6 @@ out:
 /*
  * return 1 if there are stopped jobs, otherwise 0
  */
-
 int
 stoppedjobs(void)
 {
@@ -7453,7 +7424,6 @@ out:
  * Return a string identifying a command (to be printed by the
  * jobs command).
  */
-
 #if JOBS
 static char *cmdnextc;
 
@@ -7503,7 +7473,7 @@ cmdtxt(union node *n)
                goto binop;
        case NOR:
                p = " || ";
-binop:
+ binop:
                cmdtxt(n->nbinary.ch1);
                cmdputs(p);
                n = n->nbinary.ch2;
@@ -7515,7 +7485,7 @@ binop:
        case NNOT:
                cmdputs("!");
                n = n->nnot.com;
-donode:
+ donode:
                cmdtxt(n);
                break;
        case NIF:
@@ -7540,14 +7510,14 @@ donode:
                goto until;
        case NUNTIL:
                p = "until ";
-until:
+ until:
                cmdputs(p);
                cmdtxt(n->nbinary.ch1);
                n = n->nbinary.ch2;
                p = "; done";
-dodo:
+ dodo:
                cmdputs("; do ");
-dotail:
+ dotail:
                cmdtxt(n);
                goto dotail2;
        case NFOR:
@@ -7568,7 +7538,7 @@ dotail:
                break;
        case NARG:
                p = n->narg.text;
-dotail2:
+ dotail2:
                cmdputs(p);
                break;
        case NHERE:
@@ -7607,7 +7577,7 @@ dotail2:
                goto redir;
        case NFROMTO:
                p = "<>";
-redir:
+ redir:
                s[0] = n->nfile.fd + '0';
                s[1] = '\0';
                cmdputs(s);
@@ -7714,10 +7684,10 @@ cmdputs(const char *s)
                        break;
                }
                USTPUTC(c, nextc);
-checkstr:
+ checkstr:
                if (!str)
                        continue;
-dostr:
+ dostr:
                while ((c = *str++)) {
                        USTPUTC(c, nextc);
                }
@@ -7793,14 +7763,12 @@ static time_t mailtime[MAXMBOXES];
 static int mail_var_path_changed;
 
 
-
 /*
  * Print appropriate message(s) if mail has arrived.
  * If mail_var_path_changed is set,
  * then the value of MAIL has mail_var_path_changed,
  * so we just update the values.
  */
-
 static void
 chkmail(void)
 {
@@ -7869,7 +7837,6 @@ static void read_profile(const char *);
  * exception occurs.  When an exception occurs the variable "state"
  * is used to figure out how far we had gotten.
  */
-
 int ash_main(int argc, char **argv);
 int ash_main(int argc, char **argv)
 {
@@ -7949,11 +7916,11 @@ int ash_main(int argc, char **argv)
        if (isloginsh) {
                state = 1;
                read_profile("/etc/profile");
-state1:
+ state1:
                state = 2;
                read_profile(".profile");
        }
-state2:
+ state2:
        state = 3;
        if (
 #ifndef linux
@@ -7961,11 +7928,12 @@ state2:
 #endif
                iflag
        ) {
-               if ((shinit = lookupvar("ENV")) != NULL && *shinit != '\0') {
+               shinit = lookupvar("ENV");
+               if (shinit != NULL && *shinit != '\0') {
                        read_profile(shinit);
                }
        }
-state3:
+ state3:
        state = 4;
        if (minusc)
                evalstring(minusc, 0);
@@ -8000,7 +7968,6 @@ state3:
  * Read and execute commands.  "Top" is nonzero for the top level command
  * loop; it turns on prompting if the shell is interactive.
  */
-
 static int
 cmdloop(int top)
 {
@@ -8057,7 +8024,6 @@ cmdloop(int top)
 /*
  * Read /etc/profile or .profile.  Return on error.
  */
-
 static void
 read_profile(const char *name)
 {
@@ -8077,7 +8043,6 @@ read_profile(const char *name)
 /*
  * Read a file containing shell functions.
  */
-
 static void
 readcmdfile(char *name)
 {
@@ -8091,7 +8056,6 @@ readcmdfile(char *name)
  * Take commands from a file.  To be compatible we should do a path
  * search for the file, which is necessary to find sub-commands.
  */
-
 static char * find_dot_file(char *name)
 {
        char *fullname;
@@ -8186,7 +8150,6 @@ testcmd(int argc, char **argv)
 /*
  * Same for malloc, realloc, but returns an error when out of space.
  */
-
 static pointer
 ckrealloc(pointer p, size_t nbytes)
 {
@@ -8205,7 +8168,6 @@ ckmalloc(size_t nbytes)
 /*
  * Make a copy of a string in safe storage.
  */
-
 static char *
 savestr(const char *s)
 {
@@ -8224,8 +8186,6 @@ savestr(const char *s)
  * The size 504 was chosen because the Ultrix malloc handles that size
  * well.
  */
-
-
 static pointer
 stalloc(size_t nbytes)
 {
@@ -8260,7 +8220,7 @@ stalloc(size_t nbytes)
 }
 
 
-void
+static void
 stunalloc(pointer p)
 {
 #if DEBUG
@@ -8274,7 +8234,7 @@ stunalloc(pointer p)
 }
 
 
-void
+static void
 setstackmark(struct stackmark *mark)
 {
        mark->stackp = stackp;
@@ -8285,7 +8245,7 @@ setstackmark(struct stackmark *mark)
 }
 
 
-void
+static void
 popstackmark(struct stackmark *mark)
 {
        struct stack_block *sp;
@@ -8313,8 +8273,7 @@ popstackmark(struct stackmark *mark)
  * possibly moving it (like realloc).  Grabstackblock actually allocates the
  * part of the block that has been used.
  */
-
-void
+static void
 growstackblock(void)
 {
        size_t newlen;
@@ -8374,6 +8333,7 @@ static void grabstackblock(size_t len)
        stacknleft -= len;
 }
 
+
 /*
  * The following routines are somewhat easier to use than the above.
  * The user declares a variable of type STACKSTR, which may be declared
@@ -8391,8 +8351,7 @@ static void grabstackblock(size_t len)
  * CHECKSTACKSPACE can be called before USTPUTC to ensure that there
  * is space for at least one character.
  */
-
-void *
+static void *
 growstackstr(void)
 {
        size_t len = stackblocksize();
@@ -8407,8 +8366,7 @@ growstackstr(void)
 /*
  * Called from CHECKSTRSPACE.
  */
-
-char *
+static char *
 makestrspace(size_t newlen, char *p)
 {
        size_t len = p - stacknxt;
@@ -8426,7 +8384,7 @@ makestrspace(size_t newlen, char *p)
        return stackblock() + len;
 }
 
-char *
+static char *
 stnputs(const char *s, size_t n, char *p)
 {
        p = makestrspace(n, p);
@@ -8434,7 +8392,7 @@ stnputs(const char *s, size_t n, char *p)
        return p;
 }
 
-char *
+static char *
 stputs(const char *s, char *p)
 {
        return stnputs(s, strlen(s), p);
@@ -8452,8 +8410,7 @@ stputs(const char *s, char *p)
 /*
  * prefix -- see if pfx is a prefix of string.
  */
-
-char *
+static char *
 prefix(const char *string, const char *pfx)
 {
        while (*pfx) {
@@ -8468,11 +8425,9 @@ prefix(const char *string, const char *pfx)
  * Convert a string of digits to an integer, printing an error message on
  * failure.
  */
-
-int
+static int
 number(const char *s)
 {
-
        if (! is_number(s))
                sh_error(illnum, s);
        return atoi(s);
@@ -8482,8 +8437,7 @@ number(const char *s)
 /*
  * Check for a valid number.  This should be elsewhere.
  */
-
-int
+static int
 is_number(const char *p)
 {
        do {
@@ -8498,9 +8452,9 @@ is_number(const char *p)
  * Produce a possibly single quoted string suitable as input to the shell.
  * The return string is allocated on the stack.
  */
-
-char *
-single_quote(const char *s) {
+static char *
+single_quote(const char *s)
+{
        char *p;
 
        STARTSTACKSTR(p);
@@ -8539,11 +8493,11 @@ single_quote(const char *s) {
        return stackblock();
 }
 
+
 /*
  * Like strdup but works with the ash stack.
  */
-
-char *
+static char *
 sstrdup(const char *p)
 {
        size_t len = strlen(p) + 1;
@@ -8764,7 +8718,6 @@ nodesavestr(char *s)
 /*
  * Free a parse tree.
  */
-
 static void
 freefunc(struct funcnode *f)
 {
@@ -8780,8 +8733,7 @@ static void setoption(int, int);
 /*
  * Process the shell command line arguments.
  */
-
-void
+static void
 procargs(int argc, char **argv)
 {
        int i;
@@ -8820,7 +8772,7 @@ procargs(int argc, char **argv)
                        goto setarg0;
        } else if (!sflag) {
                setinputfile(*xargv, 0);
-setarg0:
+ setarg0:
                arg0 = *xargv++;
                commandname = arg0;
        }
@@ -8839,7 +8791,7 @@ setarg0:
 }
 
 
-void
+static void
 optschanged(void)
 {
 #if DEBUG
@@ -8869,11 +8821,11 @@ static void minus_o(char *name, int val)
        }
 }
 
+
 /*
  * Process shell options.  The global variable argptr contains a pointer
  * to the argument list; we advance it past the options.
  */
-
 static void
 options(int cmdline)
 {
@@ -8885,7 +8837,8 @@ options(int cmdline)
                minusc = NULL;
        while ((p = *argptr) != NULL) {
                argptr++;
-               if ((c = *p++) == '-') {
+               c = *p++;
+               if (c == '-') {
                        val = 1;
                        if (p[0] == '\0' || LONE_DASH(p)) {
                                if (!cmdline) {
@@ -8941,8 +8894,7 @@ setoption(int flag, int val)
 /*
  * Set the shell parameters.
  */
-
-void
+static void
 setparam(char **argv)
 {
        char **newparam;
@@ -8969,8 +8921,7 @@ setparam(char **argv)
 /*
  * Free the list of positional parameters.
  */
-
-void
+static void
 freeparam(volatile struct shparam *param)
 {
        char **ap;
@@ -8986,8 +8937,7 @@ freeparam(volatile struct shparam *param)
 /*
  * The shift builtin command.
  */
-
-int
+static int
 shiftcmd(int argc, char **argv)
 {
        int n;
@@ -9018,8 +8968,7 @@ shiftcmd(int argc, char **argv)
 /*
  * The set command builtin.
  */
-
-int
+static int
 setcmd(int argc, char **argv)
 {
        if (argc == 1)
@@ -9103,7 +9052,7 @@ getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *opt
                /* Current word is done, advance */
                p = *optnext;
                if (p == NULL || *p != '-' || *++p == '\0') {
-atend:
+ atend:
                        p = NULL;
                        done = 1;
                        goto out;
@@ -9152,8 +9101,7 @@ atend:
                p = NULL;
        } else
                err |= setvarsafe("OPTARG", nullstr, 0);
-
-out:
+ out:
        *optoff = p ? p - *(optnext - 1) : -1;
        *param_optind = optnext - optfirst + 1;
        fmtstr(s, sizeof(s), "%d", *param_optind);
@@ -9170,14 +9118,14 @@ out:
        return done;
 }
 
+
 /*
  * The getopts builtin.  Shellparam.optnext points to the next argument
  * to be processed.  Shellparam.optptr points to the next character to
  * be processed in the current argument.  If shellparam.optnext is NULL,
  * then it's the first time getopts has been called.
  */
-
-int
+static int
 getoptscmd(int argc, char **argv)
 {
        char **optbase;
@@ -9190,8 +9138,7 @@ getoptscmd(int argc, char **argv)
                        shellparam.optind = 1;
                        shellparam.optoff = -1;
                }
-       }
-       else {
+       } else {
                optbase = &argv[3];
                if (shellparam.optind > argc - 2) {
                        shellparam.optind = 1;
@@ -9214,7 +9161,6 @@ getoptscmd(int argc, char **argv)
  * other arguments are unnecessary.  It return the character, or '\0' on
  * end of input.
  */
-
 static int
 nextopt(const char *optstring)
 {
@@ -9222,7 +9168,8 @@ nextopt(const char *optstring)
        const char *q;
        char c;
 
-       if ((p = optptr) == NULL || *p == '\0') {
+       p = optptr;
+       if (p == NULL || *p == '\0') {
                p = *argptr;
                if (p == NULL || *p != '-' || *++p == '\0')
                        return '\0';
@@ -9250,7 +9197,7 @@ nextopt(const char *optstring)
 
 /*      output.c     */
 
-void
+static void
 outstr(const char *p, FILE *file)
 {
        INTOFF;
@@ -9258,7 +9205,7 @@ outstr(const char *p, FILE *file)
        INTON;
 }
 
-void
+static void
 flushall(void)
 {
        INTOFF;
@@ -9267,7 +9214,7 @@ flushall(void)
        INTON;
 }
 
-void
+static void
 flusherr(void)
 {
        INTOFF;
@@ -9300,7 +9247,7 @@ out1fmt(const char *fmt, ...)
 }
 
 
-int
+static int
 fmtstr(char *outbuf, size_t length, const char *fmt, ...)
 {
        va_list ap;
@@ -9359,7 +9306,6 @@ static void setprompt(int);
  * Read and parse a command.  Returns NEOF on end of file.  (NULL is a
  * valid parse tree indicating a blank line.)
  */
-
 union node *
 parsecmd(int interact)
 {
@@ -9408,8 +9354,7 @@ list(int nlflag)
                }
                if (n1 == NULL) {
                        n1 = n2;
-               }
-               else {
+               } else {
                        n3 = (union node *)stalloc(sizeof(struct nbinary));
                        n3->type = NSEMI;
                        n3->nbinary.ch1 = n1;
@@ -9457,7 +9402,8 @@ andor(void)
 
        n1 = pipeline();
        for (;;) {
-               if ((t = readtoken()) == TAND) {
+               t = readtoken();
+               if (t == TAND) {
                        t = NAND;
                } else if (t == TOR) {
                        t = NOR;
@@ -9633,7 +9579,7 @@ command(void)
                if (lasttoken != TIN)
                        synexpect(TIN);
                cpp = &n1->ncase.cases;
-next_case:
+ next_case:
                checkkwd = CHKNL | CHKKWD;
                t = readtoken();
                while (t != TESAC) {
@@ -9660,7 +9606,8 @@ next_case:
                        cpp = &cp->nclist.next;
 
                        checkkwd = CHKNL | CHKKWD;
-                       if ((t = readtoken()) != TESAC) {
+                       t = readtoken();
+                       if (t != TESAC) {
                                if (t != TENDCASE)
                                        synexpect(TENDCASE);
                                else
@@ -9689,7 +9636,7 @@ next_case:
        if (readtoken() != t)
                synexpect(t);
 
-redir:
+ redir:
        /* Now check for redirection which may follow command */
        checkkwd = CHKKWD | CHKALIAS;
        rpp = rpp2;
@@ -9709,7 +9656,6 @@ redir:
                }
                n1->nredir.redirect = redir;
        }
-
        return n1;
 }
 
@@ -9782,7 +9728,7 @@ simplecmd(void) {
                        goto out;
                }
        }
-out:
+ out:
        *app = NULL;
        *vpp = NULL;
        *rpp = NULL;
@@ -9807,7 +9753,7 @@ makename(void)
        return n;
 }
 
-void fixredir(union node *n, const char *text, int err)
+static void fixredir(union node *n, const char *text, int err)
 {
        TRACE(("Fix redir %s %d\n", text, err));
        if (!err)
@@ -9842,7 +9788,7 @@ parsefname(void)
                if (quoteflag == 0)
                        n->type = NXHERE;
                TRACE(("Here document %d\n", n->type));
-               if (! noexpand(wordtext) || (i = strlen(wordtext)) == 0 || i > EOFMARKLEN)
+               if (!noexpand(wordtext) || (i = strlen(wordtext)) == 0 || i > EOFMARKLEN)
                        synerror("Illegal eof marker for << redirection");
                rmescapes(wordtext);
                here->eofmark = wordtext;
@@ -9850,7 +9796,7 @@ parsefname(void)
                if (heredoclist == NULL)
                        heredoclist = here;
                else {
-                       for (p = heredoclist ; p->next ; p = p->next);
+                       for (p = heredoclist; p->next; p = p->next);
                        p->next = here;
                }
        } else if (n->type == NTOFD || n->type == NFROMFD) {
@@ -9864,7 +9810,6 @@ parsefname(void)
 /*
  * Input any here documents.
  */
-
 static void
 parseheredoc(void)
 {
@@ -9908,7 +9853,7 @@ readtoken(void)
 #endif
 
 #if ENABLE_ASH_ALIAS
-top:
+ top:
 #endif
 
        t = xxreadtoken();
@@ -9933,7 +9878,8 @@ top:
        if (checkkwd & CHKKWD) {
                const char *const *pp;
 
-               if ((pp = findkwd(wordtext))) {
+               pp = findkwd(wordtext);
+               if (pp) {
                        lasttoken = t = pp - tokname_array;
                        TRACE(("keyword %s recognized\n", tokname(t)));
                        goto out;
@@ -9943,7 +9889,8 @@ top:
        if (checkkwd & CHKALIAS) {
 #if ENABLE_ASH_ALIAS
                struct alias *ap;
-               if ((ap = lookupalias(wordtext, 1)) != NULL) {
+               ap = lookupalias(wordtext, 1);
+               if (ap != NULL) {
                        if (*ap->val) {
                                pushstring(ap->val, ap);
                        }
@@ -9951,7 +9898,7 @@ top:
                }
 #endif
        }
-out:
+ out:
        checkkwd = 0;
 #if DEBUG
        if (!alreadyseen)
@@ -10054,11 +10001,10 @@ static int xxreadtoken(void)
                                                }
                                        }
                                }
-
                                return lasttoken = xxreadtoken_tokens[p - xxreadtoken_chars];
                        }
                }
-       }
+       } /* for */
 }
 
 
@@ -10128,7 +10074,7 @@ xxreadtoken(void)
                        goto breakloop;
                }
        }
-breakloop:
+ breakloop:
        return readtoken1(c, BASESYNTAX, (char *)NULL, 0);
 #undef RETURN
 }
@@ -10372,7 +10318,6 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs)
  * is called, c is set to the first character of the next input line.  If
  * we are at the end of the here document, this routine sets the c to PEOF.
  */
-
 checkend: {
        if (eofmark) {
 #if ENABLE_ASH_ALIAS
@@ -10410,7 +10355,6 @@ checkend: {
  * specifying the fd to be redirected.  The variable "c" contains the
  * first character of the redirection operator.
  */
-
 parseredir: {
        char fd = *out;
        union node *np;
@@ -10431,7 +10375,8 @@ parseredir: {
                }
        } else {        /* c == '<' */
                np->nfile.fd = 0;
-               switch (c = pgetc()) {
+               c = pgetc();
+               switch (c) {
                case '<':
                        if (sizeof(struct nfile) != sizeof(struct nhere)) {
                                np = (union node *)stalloc(sizeof(struct nhere));
@@ -10440,7 +10385,8 @@ parseredir: {
                        np->type = NHERE;
                        heredoc = (struct heredoc *)stalloc(sizeof(struct heredoc));
                        heredoc->here = np;
-                       if ((c = pgetc()) == '-') {
+                       c = pgetc();
+                       if (c == '-') {
                                heredoc->striptabs = 1;
                        } else {
                                heredoc->striptabs = 0;
@@ -10473,7 +10419,6 @@ parseredir: {
  * Parse a substitution.  At this point, we have read the dollar sign
  * and nothing else.
  */
-
 parsesub: {
        int subtype;
        int typeloc;
@@ -10507,12 +10452,12 @@ parsesub: {
                if (c == '{') {
                        c = pgetc();
                        if (c == '#') {
-                               if ((c = pgetc()) == '}')
+                               c = pgetc();
+                               if (c == '}')
                                        c = '#';
                                else
                                        subtype = VSLENGTH;
-                       }
-                       else
+                       } else
                                subtype = 0;
                }
                if (c > PEOA_OR_PEOF && is_name(c)) {
@@ -10582,7 +10527,6 @@ parsesub: {
  * list of commands (passed by reference), and savelen is the number of
  * characters on the top of the stack which must be preserved.
  */
-
 parsebackq: {
        struct nodelist **nlpp;
        int savepbq;
@@ -10629,12 +10573,14 @@ parsebackq: {
                        if (needprompt) {
                                setprompt(2);
                        }
-                       switch (pc = pgetc()) {
+                       pc = pgetc();
+                       switch (pc) {
                        case '`':
                                goto done;
 
                        case '\\':
-                               if ((pc = pgetc()) == '\n') {
+                               pc = pgetc();
+                               if (pc == '\n') {
                                        plinno++;
                                        if (doprompt)
                                                setprompt(2);
@@ -10671,7 +10617,7 @@ parsebackq: {
                        }
                        STPUTC(pc, pout);
                }
-done:
+ done:
                STPUTC('\0', pout);
                psavelen = pout - (char *)stackblock();
                if (psavelen > 0) {
@@ -10763,7 +10709,6 @@ parsearith: {
  * Returns true if the text contains nothing to expand (no dollar signs
  * or backquotes).
  */
-
 static int
 noexpand(char *text)
 {
@@ -10787,7 +10732,6 @@ noexpand(char *text)
  * Return of a legal variable name (a letter or underscore followed by zero or
  * more letters, underscores, and digits).
  */
-
 static char *
 endofname(const char *name)
 {
@@ -10809,7 +10753,6 @@ endofname(const char *name)
  * is the token that is expected, or -1 if more than one type of token can
  * occur at this point.
  */
-
 static void synexpect(int token)
 {
        char msg[64];
@@ -10834,7 +10777,6 @@ synerror(const char *msg)
  * called by editline -- any expansions to the prompt
  *    should be added here.
  */
-
 #if ENABLE_ASH_EXPAND_PRMT
 static const char *
 expandstr(const char *ps)
@@ -10963,12 +10905,12 @@ static int noclobberopen(const char *fname)
        return -1;
 }
 
+
 /*
  * Handle here documents.  Normally we fork off a process to write the
  * data to a pipe.  If the document is short, we can stuff the data in
  * the pipe without forking.
  */
-
 static int openhere(union node *redir)
 {
        int pip[2];
@@ -10998,7 +10940,7 @@ static int openhere(union node *redir)
                        expandhere(redir->nhere.doc, pip[1]);
                _exit(0);
        }
-out:
+ out:
        close(pip[1]);
        return pip[0];
 }
@@ -11012,31 +10954,36 @@ openredirect(union node *redir)
        switch (redir->nfile.type) {
        case NFROM:
                fname = redir->nfile.expfname;
-               if ((f = open(fname, O_RDONLY)) < 0)
+               f = open(fname, O_RDONLY);
+               if (f < 0)
                        goto eopen;
                break;
        case NFROMTO:
                fname = redir->nfile.expfname;
-               if ((f = open(fname, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0)
+               f = open(fname, O_RDWR|O_CREAT|O_TRUNC, 0666);
+               if (f < 0)
                        goto ecreate;
                break;
        case NTO:
                /* Take care of noclobber mode. */
                if (Cflag) {
                        fname = redir->nfile.expfname;
-                       if ((f = noclobberopen(fname)) < 0)
+                       f = noclobberopen(fname);
+                       if (f < 0)
                                goto ecreate;
                        break;
                }
                /* FALLTHROUGH */
        case NCLOBBER:
                fname = redir->nfile.expfname;
-               if ((f = open(fname, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
+               f = open(fname, O_WRONLY|O_CREAT|O_TRUNC, 0666);
+               if (f < 0)
                        goto ecreate;
                break;
        case NAPPEND:
                fname = redir->nfile.expfname;
-               if ((f = open(fname, O_WRONLY|O_CREAT|O_APPEND, 0666)) < 0)
+               f = open(fname, O_WRONLY|O_CREAT|O_APPEND, 0666);
+               if (f < 0)
                        goto ecreate;
                break;
        default:
@@ -11055,9 +11002,9 @@ openredirect(union node *redir)
        }
 
        return f;
-ecreate:
+ ecreate:
        sh_error("cannot create %s: %s", fname, errmsg(errno, E_CREAT));
-eopen:
+ eopen:
        sh_error("cannot open %s: %s", fname, errmsg(errno, E_OPEN));
 }
 
@@ -11078,6 +11025,7 @@ static void dupredirect(union node *redir, int f)
        }
 }
 
+
 /*
  * Process a list of redirection commands.  If the REDIR_PUSH flag is set,
  * old file descriptors are stashed away so that the redirection can be
@@ -11085,7 +11033,6 @@ static void dupredirect(union node *redir, int f)
  * standard output, and the standard error if it becomes a duplicate of
  * stdout, is saved in memory.
  */
-
 static void
 redirect(union node *redir, int flags)
 {
@@ -11151,8 +11098,7 @@ redirect(union node *redir, int flags)
 /*
  * Undo the effects of the last redirection.
  */
-
-void
+static void
 popredir(int drop)
 {
        struct redirtab *rp;
@@ -11184,8 +11130,7 @@ popredir(int drop)
 /*
  * Discard all saved file descriptors.
  */
-
-void
+static void
 clearredir(int drop)
 {
        for (;;) {
@@ -11202,8 +11147,7 @@ clearredir(int drop)
  * if the source file descriptor is closed, EMPTY if there are no unused
  * file descriptors left.
  */
-
-int
+static int
 copyfd(int from, int to)
 {
        int newfd;
@@ -11219,7 +11163,7 @@ copyfd(int from, int to)
 }
 
 
-int
+static int
 redirectsafe(union node *redir, int flags)
 {
        int err;
@@ -11228,7 +11172,8 @@ redirectsafe(union node *redir, int flags)
        struct jmploc jmploc;
 
        SAVEINT(saveint);
-       if (!(err = setjmp(jmploc.loc) * 2)) {
+       err = setjmp(jmploc.loc) * 2;
+       if (!err) {
                handler = &jmploc;
                redirect(redir, flags);
        }
@@ -11249,7 +11194,7 @@ static void indent(int, char *, FILE *);
 static void trstring(char *);
 
 
-void
+static void
 showtree(union node *n)
 {
        trputs("showtree called\n");
@@ -11276,7 +11221,7 @@ shtree(union node *n, int ind, char *pfx, FILE *fp)
                goto binop;
        case NOR:
                s = " || ";
-binop:
+ binop:
                shtree(n->nbinary.ch1, ind, NULL, fp);
           /*    if (ind < 0) */
                        fputs(s, fp);
@@ -11450,10 +11395,10 @@ indent(int amount, char *pfx, FILE *fp)
  */
 
 
-FILE *tracefile;
+static FILE *tracefile;
 
 
-void
+static void
 trputc(int c)
 {
        if (debug != 1)
@@ -11461,7 +11406,7 @@ trputc(int c)
        putc(c, tracefile);
 }
 
-void
+static void
 trace(const char *fmt, ...)
 {
        va_list va;
@@ -11473,7 +11418,7 @@ trace(const char *fmt, ...)
        va_end(va);
 }
 
-void
+static void
 tracev(const char *fmt, va_list va)
 {
        if (debug != 1)
@@ -11482,7 +11427,7 @@ tracev(const char *fmt, va_list va)
 }
 
 
-void
+static void
 trputs(const char *s)
 {
        if (debug != 1)
@@ -11512,7 +11457,7 @@ trstring(char *s)
                case CTLVAR+CTLQUOTE:  c = 'V';  goto backslash;
                case CTLBACKQ:  c = 'q';  goto backslash;
                case CTLBACKQ+CTLQUOTE:  c = 'Q';  goto backslash;
-backslash:        putc('\\', tracefile);
+ backslash:        putc('\\', tracefile);
                        putc(c, tracefile);
                        break;
                default:
@@ -11531,7 +11476,7 @@ backslash:        putc('\\', tracefile);
 }
 
 
-void
+static void
 trargs(char **ap)
 {
        if (debug != 1)
@@ -11546,7 +11491,7 @@ trargs(char **ap)
 }
 
 
-void
+static void
 opentrace(void)
 {
        char s[100];
@@ -11568,14 +11513,16 @@ opentrace(void)
                        return;
                }
        } else {
-               if ((tracefile = fopen(s, "a")) == NULL) {
+               tracefile = fopen(s, "a");
+               if (tracefile == NULL) {
                        fprintf(stderr, "Can't open %s\n", s);
                        debug = 0;
                        return;
                }
        }
 #ifdef O_APPEND
-       if ((flags = fcntl(fileno(tracefile), F_GETFL, 0)) >= 0)
+       flags = fcntl(fileno(tracefile), F_GETFL, 0);
+       if (flags >= 0)
                fcntl(fileno(tracefile), F_SETFL, flags | O_APPEND);
 #endif
        setlinebuf(tracefile);
@@ -11602,8 +11549,7 @@ opentrace(void)
 /*
  * The trap builtin.
  */
-
-int
+static int
 trapcmd(int argc, char **argv)
 {
        char *action;
@@ -11629,7 +11575,8 @@ trapcmd(int argc, char **argv)
        else
                action = *ap++;
        while (*ap) {
-               if ((signo = get_signum(*ap)) < 0)
+               signo = get_signum(*ap);
+               if (signo < 0)
                        sh_error("%s: bad trap", *ap);
                INTOFF;
                if (action) {
@@ -11653,8 +11600,7 @@ trapcmd(int argc, char **argv)
 /*
  * Clear traps on a fork.
  */
-
-void
+static void
 clear_traps(void)
 {
        char **tp;
@@ -11676,15 +11622,15 @@ clear_traps(void)
  * Set the signal handler for the specified signal.  The routine figures
  * out what it should be set to.
  */
-
-void
+static void
 setsignal(int signo)
 {
        int action;
        char *t, tsig;
        struct sigaction act;
 
-       if ((t = trap[signo]) == NULL)
+       t = trap[signo];
+       if (t == NULL)
                action = S_DFL;
        else if (*t != '\0')
                action = S_CATCH;
@@ -11759,11 +11705,11 @@ setsignal(int signo)
        sigaction(signo, &act, 0);
 }
 
+
 /*
  * Ignore a signal.
  */
-
-void
+static void
 ignoresig(int signo)
 {
        if (sigmode[signo - 1] != S_IGN && sigmode[signo - 1] != S_HARD_IGN) {
@@ -11776,8 +11722,7 @@ ignoresig(int signo)
 /*
  * Signal handler.
  */
-
-void
+static void
 onsig(int signo)
 {
        gotsig[signo - 1] = 1;
@@ -11795,8 +11740,7 @@ onsig(int signo)
  * Called to execute a trap.  Perhaps we should avoid entering new trap
  * handlers while we are executing a trap handler.
  */
-
-int
+static int
 dotrap(void)
 {
        char *p;
@@ -11830,8 +11774,7 @@ dotrap(void)
 /*
  * Controls whether the shell is interactive or not.
  */
-
-void
+static void
 setinteractive(int on)
 {
        static int is_interactive;
@@ -11889,11 +11832,11 @@ static int helpcmd(int argc, char **argv)
 }
 #endif /* FEATURE_SH_EXTRA_QUIET */
 
+
 /*
  * Called to exit the shell.
  */
-
-void
+static void
 exitshell(void)
 {
        struct jmploc loc;
@@ -11912,12 +11855,13 @@ exitshell(void)
                goto out;
        }
        handler = &loc;
-       if ((p = trap[0])) {
+       p = trap[0];
+       if (p) {
                trap[0] = NULL;
                evalstring(p, 0);
        }
        flushall();
-out:
+ out:
        setjobctl(0);
        _exit(status);
        /* NOTREACHED */
@@ -11939,8 +11883,7 @@ static struct var **findvar(struct var **, const char *);
 /*
  * Safe version of setvar, returns 1 on success 0 on failure.
  */
-
-int
+static int
 setvarsafe(const char *name, const char *val, int flags)
 {
        int err;
@@ -11962,11 +11905,11 @@ setvarsafe(const char *name, const char *val, int flags)
 }
 #endif
 
+
 /*
  * Set the value of a variable.  The flags argument is ored with the
  * flags of the variable.  If val is NULL, the variable is unset.
  */
-
 static void
 setvar(const char *name, const char *val, int flags)
 {
@@ -12006,8 +11949,7 @@ setvar(const char *name, const char *val, int flags)
  * will go away.
  * Called with interrupts off.
  */
-
-void
+static void
 setvareq(char *s, int flags)
 {
        struct var *vp, **vpp;
@@ -12054,7 +11996,6 @@ setvareq(char *s, int flags)
 /*
  * Process a linked list of variable assignments.
  */
-
 static void
 listsetvar(struct strlist *list_set_var, int flags)
 {
@@ -12073,13 +12014,13 @@ listsetvar(struct strlist *list_set_var, int flags)
 /*
  * Find the value of a variable.  Returns NULL if not set.
  */
-
 static char *
 lookupvar(const char *name)
 {
        struct var *v;
 
-       if ((v = *findvar(hashvar(name), name))) {
+       v = *findvar(hashvar(name), name);
+       if (v) {
 #ifdef DYNAMIC_VAR
        /*
         * Dynamic variables are implemented roughly the same way they are
@@ -12101,7 +12042,6 @@ lookupvar(const char *name)
 /*
  * Search the environment of a builtin command.
  */
-
 static char *
 bltinlookup(const char *name)
 {
@@ -12118,7 +12058,6 @@ bltinlookup(const char *name)
 /*
  * Generate a list of variables satisfying the given conditions.
  */
-
 static char **
 listvars(int on, int off, char ***end)
 {
@@ -12154,7 +12093,6 @@ listvars(int on, int off, char ***end)
  * instead of hashed lists.
  * For now just roll 'em through qsort for printing...
  */
-
 static int
 showvars(const char *sep_prefix, int on, int off)
 {
@@ -12185,7 +12123,6 @@ showvars(const char *sep_prefix, int on, int off)
 /*
  * The export and readonly commands.
  */
-
 static int
 exportcmd(int argc, char **argv)
 {
@@ -12199,10 +12136,12 @@ exportcmd(int argc, char **argv)
        notp = nextopt("p") - 'p';
        if (notp && ((name = *(aptr = argptr)))) {
                do {
-                       if ((p = strchr(name, '=')) != NULL) {
+                       p = strchr(name, '=');
+                       if (p != NULL) {
                                p++;
                        } else {
-                               if ((vp = *findvar(hashvar(name), name))) {
+                               vp = *findvar(hashvar(name), name);
+                               if (vp) {
                                        vp->flags |= flag;
                                        continue;
                                }
@@ -12222,7 +12161,6 @@ exportcmd(int argc, char **argv)
  * will be restored when the shell function returns.  We handle the name
  * "-" as a special case.
  */
-
 static void mklocal(char *name)
 {
        struct localvar *lvp;
@@ -12263,10 +12201,10 @@ static void mklocal(char *name)
        INTON;
 }
 
+
 /*
  * The "local" command.
  */
-
 static int
 localcmd(int argc, char **argv)
 {
@@ -12284,7 +12222,6 @@ localcmd(int argc, char **argv)
  * Called after a function returns.
  * Interrupts must be off.
  */
-
 static void
 poplocalvars(void)
 {
@@ -12319,8 +12256,7 @@ poplocalvars(void)
  * variable to allow a function to be unset when there is a readonly variable
  * with the same name.
  */
-
-int
+static int
 unsetcmd(int argc, char **argv)
 {
        char **ap;
@@ -12349,8 +12285,7 @@ unsetcmd(int argc, char **argv)
 /*
  * Unset the specified variable.
  */
-
-int
+static int
 unsetvar(const char *s)
 {
        struct var **vpp;
@@ -12385,8 +12320,7 @@ unsetvar(const char *s)
 ok:
                retval = 0;
        }
-
-out:
+ out:
        return retval;
 }
 
@@ -12394,7 +12328,6 @@ out:
 /*
  * Find the appropriate entry in the hash table from the name.
  */
-
 static struct var **
 hashvar(const char *p)
 {
@@ -12412,8 +12345,7 @@ hashvar(const char *p)
  * string must be terminated by '='; the second may be terminated by
  * either '=' or '\0'.
  */
-
-int
+static int
 varcmp(const char *p, const char *q)
 {
        int c, d;
@@ -12428,7 +12360,7 @@ varcmp(const char *p, const char *q)
                c = 0;
        if (d == '=')
                d = 0;
-out:
+ out:
        return c - d;
 }
 
@@ -12513,7 +12445,6 @@ dash_arith(const char *s)
  *
  *  Copyright (C) 2003 Vladimir Oleynik <dzo@simtreas.ru>
  */
-
 static int
 letcmd(int argc, char **argv)
 {
@@ -12550,7 +12481,6 @@ typedef enum __rlimit_resource rlim_t;
  *
  * This uses unbuffered input, which may be avoidable in some cases.
  */
-
 static int
 readcmd(int argc, char **argv)
 {
@@ -12639,9 +12569,11 @@ readcmd(int argc, char **argv)
        if (prompt && isatty(0)) {
                out2str(prompt);
        }
-       if (*(ap = argptr) == NULL)
+       ap = argptr;
+       if (*ap == NULL)
                sh_error("arg count");
-       if ((ifs = bltinlookup("IFS")) == NULL)
+       ifs = bltinlookup("IFS");
+       if (ifs == NULL)
                ifs = defifs;
 #if ENABLE_ASH_READ_NCHARS
        if (nch_flag || silent) {
@@ -12712,7 +12644,7 @@ readcmd(int argc, char **argv)
                        startword = 1;
                        STARTSTACKSTR(p);
                } else {
-put:
+ put:
                        STPUTC(c, p);
                }
        }
@@ -12756,7 +12688,8 @@ static int umaskcmd(int argc, char **argv)
        umask(mask);
        INTON;
 
-       if ((ap = *argptr) == NULL) {
+       ap = *argptr;
+       if (ap == NULL) {
                if (symbolic_mode) {
                        char buf[18];
                        char *p = buf;
@@ -13465,7 +13398,8 @@ static arith_t arith(const char *expr, int *perrcode)
        *perrcode = errcode = 0;
 
        while (1) {
-               if ((arithval = *expr) == 0) {
+               arithval = *expr;
+               if (arithval == 0) {
                        if (p == endexpression) {
                                /* Null expression. */
                                return 0;
@@ -13503,7 +13437,8 @@ static arith_t arith(const char *expr, int *perrcode)
                        /* Skip whitespace */
                        goto prologue;
                }
-               if ((p = endofname(expr)) != expr) {
+               p = endofname(expr);
+               if (p != expr) {
                        size_t var_name_size = (p-expr) + 1;  /* trailing zero */
 
                        numstackptr->var = alloca(var_name_size);