ash: fix indentation and style. no code changes
No binary (build failed)
—
(log yok)
| @@ -342,120 +342,120 @@ struct backcmd { /* result of evalbackcmd */ | |
| struct ncmd { | |
| - | int type; |
| - | union node *assign; |
| - | union node *args; |
| - | union node *redirect; |
| + | int type; |
| + | union node *assign; |
| + | union node *args; |
| + | union node *redirect; |
| }; | |
| struct npipe { | |
| - | int type; |
| - | int backgnd; |
| - | struct nodelist *cmdlist; |
| + | int type; |
| + | int backgnd; |
| + | struct nodelist *cmdlist; |
| }; | |
| struct nredir { | |
| - | int type; |
| - | union node *n; |
| - | union node *redirect; |
| + | int type; |
| + | union node *n; |
| + | union node *redirect; |
| }; | |
| struct nbinary { | |
| - | int type; |
| - | union node *ch1; |
| - | union node *ch2; |
| + | int type; |
| + | union node *ch1; |
| + | union node *ch2; |
| }; | |
| struct nif { | |
| - | int type; |
| - | union node *test; |
| - | union node *ifpart; |
| - | union node *elsepart; |
| + | int type; |
| + | union node *test; |
| + | union node *ifpart; |
| + | union node *elsepart; |
| }; | |
| struct nfor { | |
| - | int type; |
| - | union node *args; |
| - | union node *body; |
| - | char *var; |
| + | int type; |
| + | union node *args; |
| + | union node *body; |
| + | char *var; |
| }; | |
| struct ncase { | |
| - | int type; |
| - | union node *expr; |
| - | union node *cases; |
| + | int type; |
| + | union node *expr; |
| + | union node *cases; |
| }; | |
| struct nclist { | |
| - | int type; |
| - | union node *next; |
| - | union node *pattern; |
| - | union node *body; |
| + | int type; |
| + | union node *next; |
| + | union node *pattern; |
| + | union node *body; |
| }; | |
| struct narg { | |
| - | int type; |
| - | union node *next; |
| - | char *text; |
| - | struct nodelist *backquote; |
| + | int type; |
| + | union node *next; |
| + | char *text; |
| + | struct nodelist *backquote; |
| }; | |
| struct nfile { | |
| - | int type; |
| - | union node *next; |
| - | int fd; |
| - | union node *fname; |
| - | char *expfname; |
| + | int type; |
| + | union node *next; |
| + | int fd; |
| + | union node *fname; |
| + | char *expfname; |
| }; | |
| struct ndup { | |
| - | int type; |
| - | union node *next; |
| - | int fd; |
| - | int dupfd; |
| - | union node *vname; |
| + | int type; |
| + | union node *next; |
| + | int fd; |
| + | int dupfd; |
| + | union node *vname; |
| }; | |
| struct nhere { | |
| - | int type; |
| - | union node *next; |
| - | int fd; |
| - | union node *doc; |
| + | int type; |
| + | union node *next; |
| + | int fd; |
| + | union node *doc; |
| }; | |
| struct nnot { | |
| - | int type; |
| - | union node *com; |
| + | int type; |
| + | union node *com; |
| }; | |
| union node { | |
| - | int type; |
| - | struct ncmd ncmd; |
| - | struct npipe npipe; |
| - | struct nredir nredir; |
| - | struct nbinary nbinary; |
| - | struct nif nif; |
| - | struct nfor nfor; |
| - | struct ncase ncase; |
| - | struct nclist nclist; |
| - | struct narg narg; |
| - | struct nfile nfile; |
| - | struct ndup ndup; |
| - | struct nhere nhere; |
| - | struct nnot nnot; |
| + | int type; |
| + | struct ncmd ncmd; |
| + | struct npipe npipe; |
| + | struct nredir nredir; |
| + | struct nbinary nbinary; |
| + | struct nif nif; |
| + | struct nfor nfor; |
| + | struct ncase ncase; |
| + | struct nclist nclist; |
| + | struct narg narg; |
| + | struct nfile nfile; |
| + | struct ndup ndup; |
| + | struct nhere nhere; |
| + | struct nnot nnot; |
| }; | |
| @@ -732,7 +732,7 @@ static const char *tokname(int tok) | |
| * (assuming ascii char codes, as the original implementation did) | |
| */ | |
| #define is_special(c) \ | |
| - | ( (((unsigned int)c) - 33 < 32) \ |
| + | ( (((unsigned int)c) - 33 < 32) \ |
| && ((0xc1ff920dUL >> (((unsigned int)c) - 33)) & 1)) | |
| #define digit_val(c) ((c) - '0') | |
| @@ -1154,32 +1154,32 @@ static pointer funcblock; /* block to allocate function from */ | |
| static char *funcstring; /* block to allocate strings from */ | |
| static const short nodesize[26] = { | |
| - | SHELL_ALIGN(sizeof (struct ncmd)), |
| - | SHELL_ALIGN(sizeof (struct npipe)), |
| - | SHELL_ALIGN(sizeof (struct nredir)), |
| - | SHELL_ALIGN(sizeof (struct nredir)), |
| - | SHELL_ALIGN(sizeof (struct nredir)), |
| - | SHELL_ALIGN(sizeof (struct nbinary)), |
| - | SHELL_ALIGN(sizeof (struct nbinary)), |
| - | SHELL_ALIGN(sizeof (struct nbinary)), |
| - | SHELL_ALIGN(sizeof (struct nif)), |
| - | SHELL_ALIGN(sizeof (struct nbinary)), |
| - | SHELL_ALIGN(sizeof (struct nbinary)), |
| - | SHELL_ALIGN(sizeof (struct nfor)), |
| - | SHELL_ALIGN(sizeof (struct ncase)), |
| - | SHELL_ALIGN(sizeof (struct nclist)), |
| - | SHELL_ALIGN(sizeof (struct narg)), |
| - | SHELL_ALIGN(sizeof (struct narg)), |
| - | SHELL_ALIGN(sizeof (struct nfile)), |
| - | SHELL_ALIGN(sizeof (struct nfile)), |
| - | SHELL_ALIGN(sizeof (struct nfile)), |
| - | SHELL_ALIGN(sizeof (struct nfile)), |
| - | SHELL_ALIGN(sizeof (struct nfile)), |
| - | SHELL_ALIGN(sizeof (struct ndup)), |
| - | SHELL_ALIGN(sizeof (struct ndup)), |
| - | SHELL_ALIGN(sizeof (struct nhere)), |
| - | SHELL_ALIGN(sizeof (struct nhere)), |
| - | SHELL_ALIGN(sizeof (struct nnot)), |
| + | SHELL_ALIGN(sizeof(struct ncmd)), |
| + | SHELL_ALIGN(sizeof(struct npipe)), |
| + | SHELL_ALIGN(sizeof(struct nredir)), |
| + | SHELL_ALIGN(sizeof(struct nredir)), |
| + | SHELL_ALIGN(sizeof(struct nredir)), |
| + | SHELL_ALIGN(sizeof(struct nbinary)), |
| + | SHELL_ALIGN(sizeof(struct nbinary)), |
| + | SHELL_ALIGN(sizeof(struct nbinary)), |
| + | SHELL_ALIGN(sizeof(struct nif)), |
| + | SHELL_ALIGN(sizeof(struct nbinary)), |
| + | SHELL_ALIGN(sizeof(struct nbinary)), |
| + | SHELL_ALIGN(sizeof(struct nfor)), |
| + | SHELL_ALIGN(sizeof(struct ncase)), |
| + | SHELL_ALIGN(sizeof(struct nclist)), |
| + | SHELL_ALIGN(sizeof(struct narg)), |
| + | SHELL_ALIGN(sizeof(struct narg)), |
| + | SHELL_ALIGN(sizeof(struct nfile)), |
| + | SHELL_ALIGN(sizeof(struct nfile)), |
| + | SHELL_ALIGN(sizeof(struct nfile)), |
| + | SHELL_ALIGN(sizeof(struct nfile)), |
| + | SHELL_ALIGN(sizeof(struct nfile)), |
| + | SHELL_ALIGN(sizeof(struct ndup)), |
| + | SHELL_ALIGN(sizeof(struct ndup)), |
| + | SHELL_ALIGN(sizeof(struct nhere)), |
| + | SHELL_ALIGN(sizeof(struct nhere)), |
| + | SHELL_ALIGN(sizeof(struct nnot)), |
| }; | |
| @@ -1402,8 +1402,7 @@ struct cmdentry { | |
| static const char *pathopt; /* set by padvance */ | |
| - | static void shellexec(char **, const char *, int) |
| - | ATTRIBUTE_NORETURN; |
| + | static void shellexec(char **, const char *, int) ATTRIBUTE_NORETURN; |
| static char *padvance(const char **, const char *); | |
| static void find_command(char *, struct cmdentry *, int, const char *); | |
| static struct builtincmd *find_builtin(const char *); | |
| @@ -1619,9 +1618,9 @@ static void outcslow(int, FILE *); | |
| static void flushall(void); | |
| static void flusherr(void); | |
| static int out1fmt(const char *, ...) | |
| - | __attribute__((__format__(__printf__,1,2))); |
| + | __attribute__((__format__(__printf__,1,2))); |
| static int fmtstr(char *, size_t, const char *, ...) | |
| - | __attribute__((__format__(__printf__,3,4))); |
| + | __attribute__((__format__(__printf__,3,4))); |
| static int preverrout_fd; /* save fd2 before print debug if xflag is set. */ | |
| @@ -1672,40 +1671,40 @@ static void initvar(void) | |
| static void init(void) | |
| { | |
| - | /* from input.c: */ |
| - | { |
| - | basepf.nextc = basepf.buf = basebuf; |
| - | } |
| + | /* from input.c: */ |
| + | { |
| + | basepf.nextc = basepf.buf = basebuf; |
| + | } |
| - | /* from trap.c: */ |
| - | { |
| - | signal(SIGCHLD, SIG_DFL); |
| - | } |
| + | /* from trap.c: */ |
| + | { |
| + | signal(SIGCHLD, SIG_DFL); |
| + | } |
| - | /* from var.c: */ |
| - | { |
| - | char **envp; |
| - | char ppid[32]; |
| - | const char *p; |
| - | struct stat st1, st2; |
| + | /* from var.c: */ |
| + | { |
| + | char **envp; |
| + | char ppid[32]; |
| + | const char *p; |
| + | struct stat st1, st2; |
| - | initvar(); |
| - | for (envp = environ ; envp && *envp ; envp++) { |
| - | if (strchr(*envp, '=')) { |
| - | setvareq(*envp, VEXPORT|VTEXTFIXED); |
| - | } |
| - | } |
| + | initvar(); |
| + | for (envp = environ ; envp && *envp ; envp++) { |
| + | if (strchr(*envp, '=')) { |
| + | setvareq(*envp, VEXPORT|VTEXTFIXED); |
| + | } |
| + | } |
| - | snprintf(ppid, sizeof(ppid), "%d", (int) getppid()); |
| - | setvar("PPID", ppid, 0); |
| + | snprintf(ppid, sizeof(ppid), "%d", (int) getppid()); |
| + | setvar("PPID", ppid, 0); |
| - | p = lookupvar("PWD"); |
| - | if (p) |
| - | if (*p != '/' || stat(p, &st1) || stat(".", &st2) || |
| - | st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) |
| - | p = 0; |
| - | setpwd(p, 0); |
| - | } |
| + | p = lookupvar("PWD"); |
| + | if (p) |
| + | if (*p != '/' || stat(p, &st1) || stat(".", &st2) |
| + | || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) |
| + | p = 0; |
| + | setpwd(p, 0); |
| + | } |
| } | |
| /* PEOF (the end of file marker) */ | |
| @@ -2070,29 +2069,28 @@ static int is_safe_applet(char *name) | |
| static void | |
| reset(void) | |
| { | |
| - | /* from eval.c: */ |
| - | { |
| - | evalskip = 0; |
| - | loopnest = 0; |
| - | } |
| - | |
| - | /* from input.c: */ |
| - | { |
| - | parselleft = parsenleft = 0; /* clear input buffer */ |
| - | popallfiles(); |
| - | } |
| + | /* from eval.c: */ |
| + | { |
| + | evalskip = 0; |
| + | loopnest = 0; |
| + | } |
| - | /* from parser.c: */ |
| - | { |
| - | tokpushback = 0; |
| - | checkkwd = 0; |
| - | } |
| + | /* from input.c: */ |
| + | { |
| + | parselleft = parsenleft = 0; /* clear input buffer */ |
| + | popallfiles(); |
| + | } |
| - | /* from redir.c: */ |
| - | { |
| - | clearredir(0); |
| - | } |
| + | /* from parser.c: */ |
| + | { |
| + | tokpushback = 0; |
| + | checkkwd = 0; |
| + | } |
| + | /* from redir.c: */ |
| + | { |
| + | clearredir(0); |
| + | } |
| } | |
| #ifdef CONFIG_ASH_ALIAS | |
| @@ -2118,7 +2116,7 @@ setalias(const char *name, const char *val) | |
| ap->flag &= ~ALIASDEAD; | |
| } else { | |
| /* not found */ | |
| - | ap = ckmalloc(sizeof (struct alias)); |
| + | ap = ckmalloc(sizeof(struct alias)); |
| ap->name = savestr(name); | |
| ap->val = savestr(val); | |
| ap->flag = 0; | |
| @@ -2534,8 +2532,7 @@ setpwd(const char *val, int setold) | |
| - | static void exverror(int, const char *, va_list) |
| - | ATTRIBUTE_NORETURN; |
| + | static void exverror(int, const char *, va_list) ATTRIBUTE_NORETURN; |
| /* | |
| * Called to raise an exception. Since C doesn't include exceptions, we | |
| @@ -2670,7 +2667,7 @@ sh_warnx(const char *fmt, ...) | |
| static const char * | |
| errmsg(int e, const char *em) | |
| { | |
| - | if(e == ENOENT || e == ENOTDIR) { |
| + | if (e == ENOENT || e == ENOTDIR) { |
| return em; | |
| } | |
| @@ -2792,7 +2789,7 @@ evaltree(union node *n, int flags) | |
| goto out; | |
| } | |
| TRACE(("pid %d, evaltree(%p: %d, %d) called\n", | |
| - | getpid(), n, n->type, flags)); |
| + | getpid(), n, n->type, flags)); |
| switch (n->type) { | |
| default: | |
| #if DEBUG | |
| @@ -3297,7 +3294,7 @@ evalcommand(union node *cmd, int flags) | |
| argc++; | |
| } | |
| - | argv = nargv = stalloc(sizeof (char *) * (argc + 1)); |
| + | argv = nargv = stalloc(sizeof(char *) * (argc + 1)); |
| for (sp = arglist.list ; sp ; sp = sp->next) { | |
| TRACE(("evalcommand arg: %s\n", sp->text)); | |
| *nargv++ = sp->text; | |
| @@ -3338,11 +3335,11 @@ evalcommand(union node *cmd, int flags) | |
| dprintf(preverrout_fd, p, expandstr(ps4val())); | |
| sp = varlist.list; | |
| - | for(n = 0; n < 2; n++) { |
| + | for (n = 0; n < 2; n++) { |
| while (sp) { | |
| dprintf(preverrout_fd, p, sp->text); | |
| sp = sp->next; | |
| - | if(*p == '%') { |
| + | if (*p == '%') { |
| p--; | |
| } | |
| } | |
| @@ -3563,10 +3560,8 @@ prehash(union node *n) | |
| { | |
| struct cmdentry entry; | |
| - | if (n->type == NCMD && n->ncmd.args) |
| - | if (goodname(n->ncmd.args->narg.text)) |
| - | find_command(n->ncmd.args->narg.text, &entry, 0, |
| - | pathval()); |
| + | if (n->type == NCMD && n->ncmd.args && goodname(n->ncmd.args->narg.text)) |
| + | find_command(n->ncmd.args->narg.text, &entry, 0, pathval()); |
| } | |
| @@ -4211,7 +4206,8 @@ clearcmdentry(int firstchange) | |
| if ((cmdp->cmdtype == CMDNORMAL && | |
| cmdp->param.index >= firstchange) | |
| || (cmdp->cmdtype == CMDBUILTIN && | |
| - | builtinloc >= firstchange)) { |
| + | builtinloc >= firstchange) |
| + | ) { |
| *pp = cmdp->next; | |
| ckfree(cmdp); | |
| } else { | |
| @@ -4257,7 +4253,7 @@ cmdlookup(const char *name, int add) | |
| pp = &cmdp->next; | |
| } | |
| if (add && cmdp == NULL) { | |
| - | cmdp = *pp = ckmalloc(sizeof (struct tblentry) - ARB |
| + | cmdp = *pp = ckmalloc(sizeof(struct tblentry) - ARB |
| + strlen(name) + 1); | |
| cmdp->next = NULL; | |
| cmdp->cmdtype = CMDUNKNOWN; | |
| @@ -4351,8 +4347,8 @@ unsetfunc(const char *name) | |
| { | |
| struct tblentry *cmdp; | |
| - | if ((cmdp = cmdlookup(name, 0)) != NULL && |
| - | cmdp->cmdtype == CMDFUNCTION) |
| + | cmdp = cmdlookup(name, 0); |
| + | if (cmdp!= NULL && cmdp->cmdtype == CMDFUNCTION) |
| delete_cmd_entry(); | |
| } | |
| @@ -4641,7 +4637,7 @@ expandarg(union node *arg, struct arglist *arglist, int flag) | |
| } else { | |
| if (flag & EXP_REDIR) /*XXX - for now, just remove escapes */ | |
| rmescapes(p); | |
| - | sp = (struct strlist *)stalloc(sizeof (struct strlist)); |
| + | sp = (struct strlist *)stalloc(sizeof(struct strlist)); |
| sp->text = p; | |
| *exparg.lastp = sp; | |
| exparg.lastp = &sp->next; | |
| @@ -4985,7 +4981,7 @@ expbackq(union node *cmd, int quoted, int quotes) | |
| read: | |
| if (in.fd < 0) | |
| break; | |
| - | i = safe_read(in.fd, buf, sizeof buf); |
| + | i = safe_read(in.fd, buf, sizeof(buf)); |
| TRACE(("expbackq: read returns %d\n", i)); | |
| if (i <= 0) | |
| break; | |
| @@ -5202,8 +5198,7 @@ vsplus: | |
| if (subtype == VSASSIGN || subtype == VSQUESTION) { | |
| if (varlen < 0) { | |
| - | if (subevalvar(p, var, 0, subtype, startloc, |
| - | varflags, 0)) { |
| + | if (subevalvar(p, var, 0, subtype, startloc, varflags, 0)) { |
| varflags &= ~VSNUL; | |
| /* | |
| * Remove any recorded regions beyond | |
| @@ -5255,7 +5250,7 @@ record: | |
| STPUTC('\0', expdest); | |
| patloc = expdest - (char *)stackblock(); | |
| if (subevalvar(p, NULL, patloc, subtype, | |
| - | startloc, varflags, quotes) == 0) { |
| + | startloc, varflags, quotes) == 0) { |
| int amount = expdest - ( | |
| (char *)stackblock() + patloc - 1 | |
| ); | |
| @@ -5450,7 +5445,7 @@ recordregion(int start, int end, int nulonly) | |
| ifsp = &ifsfirst; | |
| } else { | |
| INTOFF; | |
| - | ifsp = (struct ifsregion *)ckmalloc(sizeof (struct ifsregion)); |
| + | ifsp = (struct ifsregion *)ckmalloc(sizeof(struct ifsregion)); |
| ifsp->next = NULL; | |
| ifslastp->next = ifsp; | |
| INTON; | |
| @@ -5505,7 +5500,7 @@ ifsbreakup(char *string, struct arglist *arglist) | |
| continue; | |
| } | |
| *q = '\0'; | |
| - | sp = (struct strlist *)stalloc(sizeof *sp); |
| + | sp = (struct strlist *)stalloc(sizeof(*sp)); |
| sp->text = start; | |
| *arglist->lastp = sp; | |
| arglist->lastp = &sp->next; | |
| @@ -5546,7 +5541,7 @@ ifsbreakup(char *string, struct arglist *arglist) | |
| return; | |
| add: | |
| - | sp = (struct strlist *)stalloc(sizeof *sp); |
| + | sp = (struct strlist *)stalloc(sizeof(*sp)); |
| sp->text = start; | |
| *arglist->lastp = sp; | |
| arglist->lastp = &sp->next; | |
| @@ -5636,7 +5631,7 @@ addfname(const char *name) | |
| { | |
| struct strlist *sp; | |
| - | sp = (struct strlist *)stalloc(sizeof *sp); |
| + | sp = (struct strlist *)stalloc(sizeof(*sp)); |
| sp->text = sstrdup(name); | |
| *exparg.lastp = sp; | |
| exparg.lastp = &sp->next; | |
| @@ -5743,8 +5738,7 @@ out: | |
| scopy(dp->d_name, enddir); | |
| addfname(expdir); | |
| } else { | |
| - | for (p = enddir, cp = dp->d_name; |
| - | (*p++ = *cp++) != '\0';) |
| + | for (p = enddir, cp = dp->d_name; (*p++ = *cp++) != '\0';) |
| continue; | |
| p[-1] = '/'; | |
| expmeta(p, endname); | |
| @@ -6226,7 +6220,7 @@ pushstring(char *s, void *ap) | |
| INTOFF; | |
| /*dprintf("*** calling pushstring: %s, %d\n", s, len);*/ | |
| if (parsefile->strpush) { | |
| - | sp = ckmalloc(sizeof (struct strpush)); |
| + | sp = ckmalloc(sizeof(struct strpush)); |
| sp->prev = parsefile->strpush; | |
| parsefile->strpush = sp; | |
| } else | |
| @@ -6357,7 +6351,7 @@ pushfile(void) | |
| parsefile->lleft = parselleft; | |
| parsefile->nextc = parsenextc; | |
| parsefile->linno = plinno; | |
| - | pf = (struct parsefile *)ckmalloc(sizeof (struct parsefile)); |
| + | pf = (struct parsefile *)ckmalloc(sizeof(struct parsefile)); |
| pf->prev = parsefile; | |
| pf->fd = -1; | |
| pf->strpush = NULL; | |
| @@ -7102,10 +7096,10 @@ makejob(union node *node, int nprocs) | |
| jp->used = 1; | |
| jp->ps = &jp->ps0; | |
| if (nprocs > 1) { | |
| - | jp->ps = ckmalloc(nprocs * sizeof (struct procstat)); |
| + | jp->ps = ckmalloc(nprocs * sizeof(struct procstat)); |
| } | |
| TRACE(("makejob(0x%lx, %d) returns %%%d\n", (long)node, nprocs, | |
| - | jobno(jp))); |
| + | jobno(jp))); |
| return jp; | |
| } | |
| @@ -7397,7 +7391,9 @@ dowait(int block, struct job *job) | |
| sp = jp->ps; | |
| do { | |
| if (sp->pid == pid) { | |
| - | TRACE(("Job %d: changing status of proc %d from 0x%x to 0x%x\n", jobno(jp), pid, sp->status, status)); |
| + | TRACE(("Job %d: changing status of proc %d " |
| + | "from 0x%x to 0x%x\n", |
| + | jobno(jp), pid, sp->status, status)); |
| sp->status = status; | |
| thisjob = jp; | |
| } | |
| @@ -7427,7 +7423,8 @@ gotjob: | |
| thisjob->changed = 1; | |
| if (thisjob->state != state) { | |
| - | TRACE(("Job %d: changing state from %d to %d\n", jobno(thisjob), thisjob->state, state)); |
| + | TRACE(("Job %d: changing state from %d to %d\n", |
| + | jobno(thisjob), thisjob->state, state)); |
| thisjob->state = state; | |
| #if JOBS | |
| if (state == JOBSTOPPED) { | |
| @@ -7913,7 +7910,7 @@ int ash_main(int argc, char **argv) | |
| #endif | |
| #if PROFILE | |
| - | monitor(4, etext, profile_buf, sizeof profile_buf, 50); |
| + | monitor(4, etext, profile_buf, sizeof(profile_buf), 50); |
| #endif | |
| #if ENABLE_FEATURE_EDITING | |
| @@ -7966,7 +7963,7 @@ int ash_main(int argc, char **argv) | |
| if (hp == NULL) { | |
| hp = lookupvar("HOME"); | |
| - | if(hp != NULL) { |
| + | if (hp != NULL) { |
| char *defhp = concat_path_file(hp, ".ash_history"); | |
| setvar("HISTFILE", defhp, 0); | |
| free(defhp); | |
| @@ -8584,79 +8581,79 @@ sstrdup(const char *p) | |
| static void | |
| calcsize(union node *n) | |
| { | |
| - | if (n == NULL) |
| - | return; |
| - | funcblocksize += nodesize[n->type]; |
| - | switch (n->type) { |
| - | case NCMD: |
| - | calcsize(n->ncmd.redirect); |
| - | calcsize(n->ncmd.args); |
| - | calcsize(n->ncmd.assign); |
| - | break; |
| - | case NPIPE: |
| - | sizenodelist(n->npipe.cmdlist); |
| - | break; |
| - | case NREDIR: |
| - | case NBACKGND: |
| - | case NSUBSHELL: |
| - | calcsize(n->nredir.redirect); |
| - | calcsize(n->nredir.n); |
| - | break; |
| - | case NAND: |
| - | case NOR: |
| - | case NSEMI: |
| - | case NWHILE: |
| - | case NUNTIL: |
| - | calcsize(n->nbinary.ch2); |
| - | calcsize(n->nbinary.ch1); |
| - | break; |
| - | case NIF: |
| - | calcsize(n->nif.elsepart); |
| - | calcsize(n->nif.ifpart); |
| - | calcsize(n->nif.test); |
| - | break; |
| - | case NFOR: |
| - | funcstringsize += strlen(n->nfor.var) + 1; |
| - | calcsize(n->nfor.body); |
| - | calcsize(n->nfor.args); |
| - | break; |
| - | case NCASE: |
| - | calcsize(n->ncase.cases); |
| - | calcsize(n->ncase.expr); |
| - | break; |
| - | case NCLIST: |
| - | calcsize(n->nclist.body); |
| - | calcsize(n->nclist.pattern); |
| - | calcsize(n->nclist.next); |
| - | break; |
| - | case NDEFUN: |
| - | case NARG: |
| - | sizenodelist(n->narg.backquote); |
| - | funcstringsize += strlen(n->narg.text) + 1; |
| - | calcsize(n->narg.next); |
| - | break; |
| - | case NTO: |
| - | case NCLOBBER: |
| - | case NFROM: |
| - | case NFROMTO: |
| - | case NAPPEND: |
| - | calcsize(n->nfile.fname); |
| - | calcsize(n->nfile.next); |
| - | break; |
| - | case NTOFD: |
| - | case NFROMFD: |
| - | calcsize(n->ndup.vname); |
| - | calcsize(n->ndup.next); |
| - | break; |
| - | case NHERE: |
| - | case NXHERE: |
| - | calcsize(n->nhere.doc); |
| - | calcsize(n->nhere.next); |
| - | break; |
| - | case NNOT: |
| - | calcsize(n->nnot.com); |
| - | break; |
| - | }; |
| + | if (n == NULL) |
| + | return; |
| + | funcblocksize += nodesize[n->type]; |
| + | switch (n->type) { |
| + | case NCMD: |
| + | calcsize(n->ncmd.redirect); |
| + | calcsize(n->ncmd.args); |
| + | calcsize(n->ncmd.assign); |
| + | break; |
| + | case NPIPE: |
| + | sizenodelist(n->npipe.cmdlist); |
| + | break; |
| + | case NREDIR: |
| + | case NBACKGND: |
| + | case NSUBSHELL: |
| + | calcsize(n->nredir.redirect); |
| + | calcsize(n->nredir.n); |
| + | break; |
| + | case NAND: |
| + | case NOR: |
| + | case NSEMI: |
| + | case NWHILE: |
| + | case NUNTIL: |
| + | calcsize(n->nbinary.ch2); |
| + | calcsize(n->nbinary.ch1); |
| + | break; |
| + | case NIF: |
| + | calcsize(n->nif.elsepart); |
| + | calcsize(n->nif.ifpart); |
| + | calcsize(n->nif.test); |
| + | break; |
| + | case NFOR: |
| + | funcstringsize += strlen(n->nfor.var) + 1; |
| + | calcsize(n->nfor.body); |
| + | calcsize(n->nfor.args); |
| + | break; |
| + | case NCASE: |
| + | calcsize(n->ncase.cases); |
| + | calcsize(n->ncase.expr); |
| + | break; |
| + | case NCLIST: |
| + | calcsize(n->nclist.body); |
| + | calcsize(n->nclist.pattern); |
| + | calcsize(n->nclist.next); |
| + | break; |
| + | case NDEFUN: |
| + | case NARG: |
| + | sizenodelist(n->narg.backquote); |
| + | funcstringsize += strlen(n->narg.text) + 1; |
| + | calcsize(n->narg.next); |
| + | break; |
| + | case NTO: |
| + | case NCLOBBER: |
| + | case NFROM: |
| + | case NFROMTO: |
| + | case NAPPEND: |
| + | calcsize(n->nfile.fname); |
| + | calcsize(n->nfile.next); |
| + | break; |
| + | case NTOFD: |
| + | case NFROMFD: |
| + | calcsize(n->ndup.vname); |
| + | calcsize(n->ndup.next); |
| + | break; |
| + | case NHERE: |
| + | case NXHERE: |
| + | calcsize(n->nhere.doc); |
| + | calcsize(n->nhere.next); |
| + | break; |
| + | case NNOT: |
| + | calcsize(n->nnot.com); |
| + | break; |
| + | }; |
| } | |
| @@ -8674,88 +8671,89 @@ sizenodelist(struct nodelist *lp) | |
| static union node * | |
| copynode(union node *n) | |
| { | |
| - | union node *new; |
| - | |
| - | if (n == NULL) |
| - | return NULL; |
| - | new = funcblock; |
| - | funcblock = (char *) funcblock + nodesize[n->type]; |
| - | switch (n->type) { |
| - | case NCMD: |
| - | new->ncmd.redirect = copynode(n->ncmd.redirect); |
| - | new->ncmd.args = copynode(n->ncmd.args); |
| - | new->ncmd.assign = copynode(n->ncmd.assign); |
| - | break; |
| - | case NPIPE: |
| - | new->npipe.cmdlist = copynodelist(n->npipe.cmdlist); |
| - | new->npipe.backgnd = n->npipe.backgnd; |
| - | break; |
| - | case NREDIR: |
| - | case NBACKGND: |
| - | case NSUBSHELL: |
| - | new->nredir.redirect = copynode(n->nredir.redirect); |
| - | new->nredir.n = copynode(n->nredir.n); |
| - | break; |
| - | case NAND: |
| - | case NOR: |
| - | case NSEMI: |
| - | case NWHILE: |
| - | case NUNTIL: |
| - | new->nbinary.ch2 = copynode(n->nbinary.ch2); |
| - | new->nbinary.ch1 = copynode(n->nbinary.ch1); |
| - | break; |
| - | case NIF: |
| - | new->nif.elsepart = copynode(n->nif.elsepart); |
| - | new->nif.ifpart = copynode(n->nif.ifpart); |
| - | new->nif.test = copynode(n->nif.test); |
| - | break; |
| - | case NFOR: |
| - | new->nfor.var = nodesavestr(n->nfor.var); |
| - | new->nfor.body = copynode(n->nfor.body); |
| - | new->nfor.args = copynode(n->nfor.args); |
| - | break; |
| - | case NCASE: |
| - | new->ncase.cases = copynode(n->ncase.cases); |
| - | new->ncase.expr = copynode(n->ncase.expr); |
| - | break; |
| - | case NCLIST: |
| - | new->nclist.body = copynode(n->nclist.body); |
| - | new->nclist.pattern = copynode(n->nclist.pattern); |
| - | new->nclist.next = copynode(n->nclist.next); |
| - | break; |
| - | case NDEFUN: |
| - | case NARG: |
| - | new->narg.backquote = copynodelist(n->narg.backquote); |
| - | new->narg.text = nodesavestr(n->narg.text); |
| - | new->narg.next = copynode(n->narg.next); |
| - | break; |
| - | case NTO: |
| - | case NCLOBBER: |
| - | case NFROM: |
| - | case NFROMTO: |
| - | case NAPPEND: |
| - | new->nfile.fname = copynode(n->nfile.fname); |
| - | new->nfile.fd = n->nfile.fd; |
| - | new->nfile.next = copynode(n->nfile.next); |
| - | break; |
| - | case NTOFD: |
| - | case NFROMFD: |
| - | new->ndup.vname = copynode(n->ndup.vname); |
| - | new->ndup.dupfd = n->ndup.dupfd; |
| - | new->ndup.fd = n->ndup.fd; |
| - | new->ndup.next = copynode(n->ndup.next); |
| - | break; |
| - | case NHERE: |
| - | case NXHERE: |
| - | new->nhere.doc = copynode(n->nhere.doc); |
| - | new->nhere.fd = n->nhere.fd; |
| - | new->nhere.next = copynode(n->nhere.next); |
| - | break; |
| - | case NNOT: |
| - | new->nnot.com = copynode(n->nnot.com); |
| - | break; |
| - | }; |
| - | new->type = n->type; |
| + | union node *new; |
| + | |
| + | if (n == NULL) |
| + | return NULL; |
| + | new = funcblock; |
| + | funcblock = (char *) funcblock + nodesize[n->type]; |
| + | |
| + | switch (n->type) { |
| + | case NCMD: |
| + | new->ncmd.redirect = copynode(n->ncmd.redirect); |
| + | new->ncmd.args = copynode(n->ncmd.args); |
| + | new->ncmd.assign = copynode(n->ncmd.assign); |
| + | break; |
| + | case NPIPE: |
| + | new->npipe.cmdlist = copynodelist(n->npipe.cmdlist); |
| + | new->npipe.backgnd = n->npipe.backgnd; |
| + | break; |
| + | case NREDIR: |
| + | case NBACKGND: |
| + | case NSUBSHELL: |
| + | new->nredir.redirect = copynode(n->nredir.redirect); |
| + | new->nredir.n = copynode(n->nredir.n); |
| + | break; |
| + | case NAND: |
| + | case NOR: |
| + | case NSEMI: |
| + | case NWHILE: |
| + | case NUNTIL: |
| + | new->nbinary.ch2 = copynode(n->nbinary.ch2); |
| + | new->nbinary.ch1 = copynode(n->nbinary.ch1); |
| + | break; |
| + | case NIF: |
| + | new->nif.elsepart = copynode(n->nif.elsepart); |
| + | new->nif.ifpart = copynode(n->nif.ifpart); |
| + | new->nif.test = copynode(n->nif.test); |
| + | break; |
| + | case NFOR: |
| + | new->nfor.var = nodesavestr(n->nfor.var); |
| + | new->nfor.body = copynode(n->nfor.body); |
| + | new->nfor.args = copynode(n->nfor.args); |
| + | break; |
| + | case NCASE: |
| + | new->ncase.cases = copynode(n->ncase.cases); |
| + | new->ncase.expr = copynode(n->ncase.expr); |
| + | break; |
| + | case NCLIST: |
| + | new->nclist.body = copynode(n->nclist.body); |
| + | new->nclist.pattern = copynode(n->nclist.pattern); |
| + | new->nclist.next = copynode(n->nclist.next); |
| + | break; |
| + | case NDEFUN: |
| + | case NARG: |
| + | new->narg.backquote = copynodelist(n->narg.backquote); |
| + | new->narg.text = nodesavestr(n->narg.text); |
| + | new->narg.next = copynode(n->narg.next); |
| + | break; |
| + | case NTO: |
| + | case NCLOBBER: |
| + | case NFROM: |
| + | case NFROMTO: |
| + | case NAPPEND: |
| + | new->nfile.fname = copynode(n->nfile.fname); |
| + | new->nfile.fd = n->nfile.fd; |
| + | new->nfile.next = copynode(n->nfile.next); |
| + | break; |
| + | case NTOFD: |
| + | case NFROMFD: |
| + | new->ndup.vname = copynode(n->ndup.vname); |
| + | new->ndup.dupfd = n->ndup.dupfd; |
| + | new->ndup.fd = n->ndup.fd; |
| + | new->ndup.next = copynode(n->ndup.next); |
| + | break; |
| + | case NHERE: |
| + | case NXHERE: |
| + | new->nhere.doc = copynode(n->nhere.doc); |
| + | new->nhere.fd = n->nhere.fd; |
| + | new->nhere.next = copynode(n->nhere.next); |
| + | break; |
| + | case NNOT: |
| + | new->nnot.com = copynode(n->nnot.com); |
| + | break; |
| + | }; |
| + | new->type = n->type; |
| return new; | |
| } | |
| @@ -8769,8 +8767,7 @@ copynodelist(struct nodelist *lp) | |
| lpp = &start; | |
| while (lp) { | |
| *lpp = funcblock; | |
| - | funcblock = (char *) funcblock + |
| - | SHELL_ALIGN(sizeof(struct nodelist)); |
| + | funcblock = (char *) funcblock + SHELL_ALIGN(sizeof(struct nodelist)); |
| (*lpp)->n = copynode(lp->n); | |
| lp = lp->next; | |
| lpp = &(*lpp)->next; | |
| @@ -8981,7 +8978,7 @@ setparam(char **argv) | |
| int nparam; | |
| for (nparam = 0 ; argv[nparam] ; nparam++); | |
| - | ap = newparam = ckmalloc((nparam + 1) * sizeof *ap); |
| + | ap = newparam = ckmalloc((nparam + 1) * sizeof(*ap)); |
| while (*argv) { | |
| *ap++ = savestr(*argv++); | |
| } | |
| @@ -9096,7 +9093,7 @@ static void change_lc_ctype(const char *value) | |
| /* Roughly copied from bash.. */ | |
| static void change_random(const char *value) | |
| { | |
| - | if(value == NULL) { |
| + | if (value == NULL) { |
| /* "get", generate */ | |
| char buf[16]; | |
| @@ -9124,7 +9121,7 @@ getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *opt | |
| char s[12]; | |
| char **optnext; | |
| - | if(*param_optind < 1) |
| + | if (*param_optind < 1) |
| return 1; | |
| optnext = optfirst + *param_optind - 1; | |
| @@ -9233,7 +9230,7 @@ getoptscmd(int argc, char **argv) | |
| } | |
| return getopts(argv[1], argv[2], optbase, &shellparam.optind, | |
| - | &shellparam.optoff); |
| + | &shellparam.optoff); |
| } | |
| #endif /* CONFIG_ASH_GETOPTS */ | |
| @@ -9446,7 +9443,7 @@ list(int nlflag) | |
| n1 = n2; | |
| } | |
| else { | |
| - | n3 = (union node *)stalloc(sizeof (struct nbinary)); |
| + | n3 = (union node *)stalloc(sizeof(struct nbinary)); |
| n3->type = NSEMI; | |
| n3->nbinary.ch1 = n1; | |
| n3->nbinary.ch2 = n2; | |
| @@ -9504,7 +9501,7 @@ andor(void) | |
| } | |
| checkkwd = CHKNL | CHKKWD | CHKALIAS; | |
| n2 = pipeline(); | |
| - | n3 = (union node *)stalloc(sizeof (struct nbinary)); |
| + | n3 = (union node *)stalloc(sizeof(struct nbinary)); |
| n3->type = t; | |
| n3->nbinary.ch1 = n1; | |
| n3->nbinary.ch2 = n2; | |
| @@ -9530,15 +9527,15 @@ pipeline(void) | |
| tokpushback++; | |
| n1 = command(); | |
| if (readtoken() == TPIPE) { | |
| - | pipenode = (union node *)stalloc(sizeof (struct npipe)); |
| + | pipenode = (union node *)stalloc(sizeof(struct npipe)); |
| pipenode->type = NPIPE; | |
| pipenode->npipe.backgnd = 0; | |
| - | lp = (struct nodelist *)stalloc(sizeof (struct nodelist)); |
| + | lp = (struct nodelist *)stalloc(sizeof(struct nodelist)); |
| pipenode->npipe.cmdlist = lp; | |
| lp->n = n1; | |
| do { | |
| prev = lp; | |
| - | lp = (struct nodelist *)stalloc(sizeof (struct nodelist)); |
| + | lp = (struct nodelist *)stalloc(sizeof(struct nodelist)); |
| checkkwd = CHKNL | CHKKWD | CHKALIAS; | |
| lp->n = command(); | |
| prev->next = lp; | |
| @@ -9548,7 +9545,7 @@ pipeline(void) | |
| } | |
| tokpushback++; | |
| if (negate) { | |
| - | n2 = (union node *)stalloc(sizeof (struct nnot)); |
| + | n2 = (union node *)stalloc(sizeof(struct nnot)); |
| n2->type = NNOT; | |
| n2->nnot.com = n1; | |
| return n2; | |
| @@ -9576,7 +9573,7 @@ command(void) | |
| synexpect(-1); | |
| /* NOTREACHED */ | |
| case TIF: | |
| - | n1 = (union node *)stalloc(sizeof (struct nif)); |
| + | n1 = (union node *)stalloc(sizeof(struct nif)); |
| n1->type = NIF; | |
| n1->nif.test = list(0); | |
| if (readtoken() != TTHEN) | |
| @@ -9584,7 +9581,7 @@ command(void) | |
| n1->nif.ifpart = list(0); | |
| n2 = n1; | |
| while (readtoken() == TELIF) { | |
| - | n2->nif.elsepart = (union node *)stalloc(sizeof (struct nif)); |
| + | n2->nif.elsepart = (union node *)stalloc(sizeof(struct nif)); |
| n2 = n2->nif.elsepart; | |
| n2->type = NIF; | |
| n2->nif.test = list(0); | |
| @@ -9603,7 +9600,7 @@ command(void) | |
| case TWHILE: | |
| case TUNTIL: { | |
| int got; | |
| - | n1 = (union node *)stalloc(sizeof (struct nbinary)); |
| + | n1 = (union node *)stalloc(sizeof(struct nbinary)); |
| n1->type = (lasttoken == TWHILE)? NWHILE : NUNTIL; | |
| n1->nbinary.ch1 = list(0); | |
| if ((got=readtoken()) != TDO) { | |
| @@ -9617,14 +9614,14 @@ TRACE(("expecting DO got %s %s\n", tokname(got), got == TWORD ? wordtext : "")); | |
| case TFOR: | |
| if (readtoken() != TWORD || quoteflag || ! goodname(wordtext)) | |
| synerror("Bad for loop variable"); | |
| - | n1 = (union node *)stalloc(sizeof (struct nfor)); |
| + | n1 = (union node *)stalloc(sizeof(struct nfor)); |
| n1->type = NFOR; | |
| n1->nfor.var = wordtext; | |
| checkkwd = CHKKWD | CHKALIAS; | |
| if (readtoken() == TIN) { | |
| app = ≈ | |
| while (readtoken() == TWORD) { | |
| - | n2 = (union node *)stalloc(sizeof (struct narg)); |
| + | n2 = (union node *)stalloc(sizeof(struct narg)); |
| n2->type = NARG; | |
| n2->narg.text = wordtext; | |
| n2->narg.backquote = backquotelist; | |
| @@ -9636,7 +9633,7 @@ TRACE(("expecting DO got %s %s\n", tokname(got), got == TWORD ? wordtext : "")); | |
| if (lasttoken != TNL && lasttoken != TSEMI) | |
| synexpect(-1); | |
| } else { | |
| - | n2 = (union node *)stalloc(sizeof (struct narg)); |
| + | n2 = (union node *)stalloc(sizeof(struct narg)); |
| n2->type = NARG; | |
| n2->narg.text = (char *)dolatstr; | |
| n2->narg.backquote = NULL; | |
| @@ -9656,11 +9653,11 @@ TRACE(("expecting DO got %s %s\n", tokname(got), got == TWORD ? wordtext : "")); | |
| t = TDONE; | |
| break; | |
| case TCASE: | |
| - | n1 = (union node *)stalloc(sizeof (struct ncase)); |
| + | n1 = (union node *)stalloc(sizeof(struct ncase)); |
| n1->type = NCASE; | |
| if (readtoken() != TWORD) | |
| synexpect(TWORD); | |
| - | n1->ncase.expr = n2 = (union node *)stalloc(sizeof (struct narg)); |
| + | n1->ncase.expr = n2 = (union node *)stalloc(sizeof(struct narg)); |
| n2->type = NARG; | |
| n2->narg.text = wordtext; | |
| n2->narg.backquote = backquotelist; | |
| @@ -9674,14 +9671,14 @@ TRACE(("expecting DO got %s %s\n", tokname(got), got == TWORD ? wordtext : "")); | |
| next_case: | |
| checkkwd = CHKNL | CHKKWD; | |
| t = readtoken(); | |
| - | while(t != TESAC) { |
| + | while (t != TESAC) { |
| if (lasttoken == TLP) | |
| readtoken(); | |
| - | *cpp = cp = (union node *)stalloc(sizeof (struct nclist)); |
| + | *cpp = cp = (union node *)stalloc(sizeof(struct nclist)); |
| cp->type = NCLIST; | |
| app = &cp->nclist.pattern; | |
| for (;;) { | |
| - | *app = ap = (union node *)stalloc(sizeof (struct narg)); |
| + | *app = ap = (union node *)stalloc(sizeof(struct narg)); |
| ap->type = NARG; | |
| ap->narg.text = wordtext; | |
| ap->narg.backquote = backquotelist; | |
| @@ -9708,7 +9705,7 @@ next_case: | |
| *cpp = NULL; | |
| goto redir; | |
| case TLP: | |
| - | n1 = (union node *)stalloc(sizeof (struct nredir)); |
| + | n1 = (union node *)stalloc(sizeof(struct nredir)); |
| n1->type = NSUBSHELL; | |
| n1->nredir.n = list(0); | |
| n1->nredir.redirect = NULL; | |
| @@ -9740,7 +9737,7 @@ redir: | |
| *rpp = NULL; | |
| if (redir) { | |
| if (n1->type != NSUBSHELL) { | |
| - | n2 = (union node *)stalloc(sizeof (struct nredir)); |
| + | n2 = (union node *)stalloc(sizeof(struct nredir)); |
| n2->type = NREDIR; | |
| n2->nredir.n = n1; | |
| n1 = n2; | |
| @@ -9772,7 +9769,7 @@ simplecmd(void) { | |
| checkkwd = savecheckkwd; | |
| switch (readtoken()) { | |
| case TWORD: | |
| - | n = (union node *)stalloc(sizeof (struct narg)); |
| + | n = (union node *)stalloc(sizeof(struct narg)); |
| n->type = NARG; | |
| n->narg.text = wordtext; | |
| n->narg.backquote = backquotelist; | |
| @@ -9824,7 +9821,7 @@ out: | |
| *app = NULL; | |
| *vpp = NULL; | |
| *rpp = NULL; | |
| - | n = (union node *)stalloc(sizeof (struct ncmd)); |
| + | n = (union node *)stalloc(sizeof(struct ncmd)); |
| n->type = NCMD; | |
| n->ncmd.args = args; | |
| n->ncmd.assign = vars; | |
| @@ -9837,7 +9834,7 @@ makename(void) | |
| { | |
| union node *n; | |
| - | n = (union node *)stalloc(sizeof (struct narg)); |
| + | n = (union node *)stalloc(sizeof(struct narg)); |
| n->type = NARG; | |
| n->narg.next = NULL; | |
| n->narg.text = wordtext; | |
| @@ -9918,7 +9915,7 @@ parseheredoc(void) | |
| } | |
| readtoken1(pgetc(), here->here->type == NHERE? SQSYNTAX : DQSYNTAX, | |
| here->eofmark, here->striptabs); | |
| - | n = (union node *)stalloc(sizeof (struct narg)); |
| + | n = (union node *)stalloc(sizeof(struct narg)); |
| n->narg.type = NARG; | |
| n->narg.next = NULL; | |
| n->narg.text = wordtext; | |
| @@ -9993,9 +9990,9 @@ out: | |
| checkkwd = 0; | |
| #if DEBUG | |
| if (!alreadyseen) | |
| - | TRACE(("token %s %s\n", tokname(t), t == TWORD ? wordtext : "")); |
| + | TRACE(("token %s %s\n", tokname(t), t == TWORD ? wordtext : "")); |
| else | |
| - | TRACE(("reread token %s %s\n", tokname(t), t == TWORD ? wordtext : "")); |
| + | TRACE(("reread token %s %s\n", tokname(t), t == TWORD ? wordtext : "")); |
| #endif | |
| return t; | |
| } | |
| @@ -10283,7 +10280,7 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) | |
| break; | |
| case CSQUOTE: | |
| syntax = SQSYNTAX; | |
| - | quotemark: |
| + | quotemark: |
| if (eofmark == NULL) { | |
| USTPUTC(CTLQUOTEMARK, out); | |
| } | |
| @@ -10293,8 +10290,9 @@ quotemark: | |
| dblquote = 1; | |
| goto quotemark; | |
| case CENDQUOTE: | |
| - | if (eofmark != NULL && arinest == 0 && |
| - | varnest == 0) { |
| + | if (eofmark != NULL && arinest == 0 |
| + | && varnest == 0 |
| + | ) { |
| USTPUTC(c, out); | |
| } else { | |
| if (dqvarnest == 0) { | |
| @@ -10369,7 +10367,7 @@ quotemark: | |
| c = pgetc_macro(); | |
| } | |
| } | |
| - | endword: |
| + | endword: |
| #ifdef CONFIG_ASH_MATH_SUPPORT | |
| if (syntax == ARISYNTAX) | |
| synerror("Missing '))'"); | |
| @@ -10399,7 +10397,8 @@ endword: | |
| backquotelist = bqlist; | |
| grabstackblock(len); | |
| wordtext = out; | |
| - | return lasttoken = TWORD; |
| + | lasttoken = TWORD; |
| + | return lasttoken; |
| /* end of readtoken routine */ | |
| @@ -10423,7 +10422,7 @@ checkend: { | |
| } | |
| } | |
| if (c == *eofmark) { | |
| - | if (pfgets(line, sizeof line) != NULL) { |
| + | if (pfgets(line, sizeof(line)) != NULL) { |
| char *p, *q; | |
| p = line; | |
| @@ -10452,7 +10451,7 @@ parseredir: { | |
| char fd = *out; | |
| union node *np; | |
| - | np = (union node *)stalloc(sizeof (struct nfile)); |
| + | np = (union node *)stalloc(sizeof(struct nfile)); |
| if (c == '>') { | |
| np->nfile.fd = 1; | |
| c = pgetc(); | |
| @@ -10470,12 +10469,12 @@ parseredir: { | |
| np->nfile.fd = 0; | |
| switch (c = pgetc()) { | |
| case '<': | |
| - | if (sizeof (struct nfile) != sizeof (struct nhere)) { |
| - | np = (union node *)stalloc(sizeof (struct nhere)); |
| + | if (sizeof(struct nfile) != sizeof(struct nhere)) { |
| + | np = (union node *)stalloc(sizeof(struct nhere)); |
| np->nfile.fd = 0; | |
| } | |
| np->type = NHERE; | |
| - | heredoc = (struct heredoc *)stalloc(sizeof (struct heredoc)); |
| + | heredoc = (struct heredoc *)stalloc(sizeof(struct heredoc)); |
| heredoc->here = np; | |
| if ((c = pgetc()) == '-') { | |
| heredoc->striptabs = 1; | |
| @@ -10562,13 +10561,11 @@ parsesub: { | |
| STPUTC(c, out); | |
| c = pgetc(); | |
| } while (is_digit(c)); | |
| - | } |
| - | else if (is_special(c)) { |
| + | } else if (is_special(c)) { |
| USTPUTC(c, out); | |
| c = pgetc(); | |
| - | } |
| - | else |
| - | badsub: synerror("Bad substitution"); |
| + | } else |
| + | badsub: synerror("Bad substitution"); |
| STPUTC('=', out); | |
| flags = 0; | |
| @@ -10589,7 +10586,7 @@ badsub: synerror("Bad substitution"); | |
| { | |
| int cc = c; | |
| subtype = c == '#' ? VSTRIMLEFT : | |
| - | VSTRIMRIGHT; |
| + | VSTRIMRIGHT; |
| c = pgetc(); | |
| if (c == cc) | |
| subtype++; | |
| @@ -10686,7 +10683,7 @@ parsebackq: { | |
| continue; | |
| } | |
| if (pc != '\\' && pc != '`' && pc != '$' | |
| - | && (!dblquote || pc != '"')) |
| + | && (!dblquote || pc != '"')) |
| STPUTC('\\', pout); | |
| if (pc > PEOA_OR_PEOF) { | |
| break; | |
| @@ -10721,7 +10718,7 @@ done: | |
| nlpp = &bqlist; | |
| while (*nlpp) | |
| nlpp = &(*nlpp)->next; | |
| - | *nlpp = (struct nodelist *)stalloc(sizeof (struct nodelist)); |
| + | *nlpp = (struct nodelist *)stalloc(sizeof(struct nodelist)); |
| (*nlpp)->next = NULL; | |
| parsebackquote = oldstyle; | |
| @@ -10776,7 +10773,6 @@ done: | |
| * Parse an arithmetic expansion (indicate start of one and set state) | |
| */ | |
| parsearith: { | |
| - | |
| if (++arinest == 1) { | |
| prevsyntax = syntax; | |
| syntax = ARISYNTAX; | |
| @@ -10835,10 +10831,10 @@ endofname(const char *name) | |
| char *p; | |
| p = (char *) name; | |
| - | if (! is_name(*p)) |
| + | if (!is_name(*p)) |
| return p; | |
| while (*++p) { | |
| - | if (! is_in_name(*p)) |
| + | if (!is_in_name(*p)) |
| break; | |
| } | |
| return p; | |
| @@ -10930,8 +10926,8 @@ static void setprompt(int whichprompt) | |
| static const char *const *findkwd(const char *s) | |
| { | |
| return bsearch(s, tokname_array + KWDOFFSET, | |
| - | (sizeof(tokname_array) / sizeof(const char *)) - KWDOFFSET, |
| - | sizeof(const char *), pstrcmp); |
| + | (sizeof(tokname_array) / sizeof(const char *)) - KWDOFFSET, |
| + | sizeof(const char *), pstrcmp); |
| } | |
| /* redir.c */ | |
| @@ -10994,8 +10990,8 @@ static int noclobberopen(const char *fname) | |
| * revealed that it was a regular file, and the file has not been | |
| * replaced, return the file descriptor. | |
| */ | |
| - | if (fstat(fd, &finfo2) == 0 && !S_ISREG(finfo2.st_mode) && |
| - | finfo.st_dev == finfo2.st_dev && finfo.st_ino == finfo2.st_ino) |
| + | if (fstat(fd, &finfo2) == 0 && !S_ISREG(finfo2.st_mode) |
| + | && finfo.st_dev == finfo2.st_dev && finfo.st_ino == finfo2.st_ino) |
| return fd; | |
| /* The file has been replaced. badness. */ | |
| @@ -11145,7 +11141,7 @@ redirect(union node *redir, int flags) | |
| INTOFF; | |
| if (flags & REDIR_PUSH) { | |
| struct redirtab *q; | |
| - | q = ckmalloc(sizeof (struct redirtab)); |
| + | q = ckmalloc(sizeof(struct redirtab)); |
| q->next = redirlist; | |
| redirlist = q; | |
| q->nullredirs = nullredirs - 1; | |
| @@ -11157,8 +11153,8 @@ redirect(union node *redir, int flags) | |
| n = redir; | |
| do { | |
| fd = n->nfile.fd; | |
| - | if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) && |
| - | n->ndup.dupfd == fd) |
| + | if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) |
| + | && n->ndup.dupfd == fd) |
| continue; /* redirect from/to same file descriptor */ | |
| newfd = openredirect(n); | |
| @@ -11458,8 +11454,8 @@ sharg(union node *arg, FILE *fp) | |
| } | |
| break; | |
| case CTLENDVAR: | |
| - | putc('}', fp); |
| - | break; |
| + | putc('}', fp); |
| + | break; |
| case CTLBACKQ: | |
| case CTLBACKQ|CTLQUOTE: | |
| putc('$', fp); | |
| @@ -11776,8 +11772,9 @@ setsignal(int signo) | |
| return; | |
| } | |
| if (act.sa_handler == SIG_IGN) { | |
| - | if (mflag && (signo == SIGTSTP || |
| - | signo == SIGTTIN || signo == SIGTTOU)) { |
| + | if (mflag && (signo == SIGTSTP || signo == SIGTTIN |
| + | || signo == SIGTTOU) |
| + | ) { |
| tsig = S_IGN; /* don't hard ignore these */ | |
| } else | |
| tsig = S_HARD_IGN; | |
| @@ -11887,11 +11884,11 @@ setinteractive(int on) | |
| setsignal(SIGQUIT); | |
| setsignal(SIGTERM); | |
| #if !ENABLE_FEATURE_SH_EXTRA_QUIET | |
| - | if(is_interactive > 1) { |
| + | if (is_interactive > 1) { |
| /* Looks like they want an interactive shell */ | |
| static int do_banner; | |
| - | if(!do_banner) { |
| + | if (!do_banner) { |
| out1fmt( | |
| "\n\n%s Built-in shell (ash)\n" | |
| "Enter 'help' for a list of built-in commands.\n\n", | |
| @@ -12083,7 +12080,7 @@ setvareq(char *s, int flags) | |
| if (flags & VNOSET) | |
| return; | |
| /* not found */ | |
| - | vp = ckmalloc(sizeof (*vp)); |
| + | vp = ckmalloc(sizeof(*vp)); |
| vp->next = *vpp; | |
| vp->func = NULL; | |
| *vpp = vp; | |
| @@ -12131,10 +12128,10 @@ lookupvar(const char *name) | |
| * As soon as they're unset, they're no longer dynamic, and dynamic | |
| * lookup will no longer happen at that point. -- PFM. | |
| */ | |
| - | if((v->flags & VDYNAMIC)) |
| + | if ((v->flags & VDYNAMIC)) |
| (*v->func)(NULL); | |
| #endif | |
| - | if(!(v->flags & VUNSET)) |
| + | if (!(v->flags & VUNSET)) |
| return strchrnul(v->text, '=') + 1; | |
| } | |
| @@ -12275,7 +12272,7 @@ static void mklocal(char *name) | |
| struct var *vp; | |
| INTOFF; | |
| - | lvp = ckmalloc(sizeof (struct localvar)); |
| + | lvp = ckmalloc(sizeof(struct localvar)); |
| if (LONE_DASH(name)) { | |
| char *p; | |
| p = ckmalloc(sizeof(optlist)); | |
| @@ -12568,7 +12565,7 @@ letcmd(int argc, char **argv) | |
| arith_t i = 0; | |
| ap = argv + 1; | |
| - | if(!*ap) |
| + | if (!*ap) |
| sh_error("expression expected"); | |
| for (ap = argv + 1; *ap; ap++) { | |
| i = dash_arith(*ap); | |
| @@ -12695,11 +12692,11 @@ readcmd(int argc, char **argv) | |
| tcgetattr(0, &tty); | |
| old_tty = tty; | |
| if (nch_flag) { | |
| - | tty.c_lflag &= ~ICANON; |
| - | tty.c_cc[VMIN] = nchars; |
| + | tty.c_lflag &= ~ICANON; |
| + | tty.c_cc[VMIN] = nchars; |
| } | |
| if (silent) { | |
| - | tty.c_lflag &= ~(ECHO|ECHOK|ECHONL); |
| + | tty.c_lflag &= ~(ECHO|ECHOK|ECHONL); |
| } | |
| tcsetattr(0, TCSANOW, &tty); | |
| @@ -12964,7 +12961,7 @@ ulimitcmd(int argc, char **argv) | |
| #ifdef RLIMIT_LOCKS | |
| "w" | |
| #endif | |
| - | )) != '\0') |
| + | )) != '\0') |
| switch (optc) { | |
| case 'H': | |
| how = HARD; | |
| @@ -12993,8 +12990,7 @@ ulimitcmd(int argc, char **argv) | |
| else { | |
| val = (rlim_t) 0; | |
| - | while ((c = *p++) >= '0' && c <= '9') |
| - | { |
| + | while ((c = *p++) >= '0' && c <= '9') { |
| val = (val * 10) + (long)(c - '0'); | |
| if (val < (rlim_t) 0) | |
| break; | |
| @@ -13158,7 +13154,7 @@ typedef unsigned char operator; | |
| #define TOK_REM_ASSIGN tok_decl(3,2) | |
| /* all assign is right associativity and precedence eq, but (7+3)<<5 > 256 */ | |
| - | #define convert_prec_is_assing(prec) do { if(prec == 3) prec = 2; } while(0) |
| + | #define convert_prec_is_assing(prec) do { if (prec == 3) prec = 2; } while (0) |
| /* conditional is right associativity too */ | |
| #define TOK_CONDITIONAL tok_decl(4,0) | |
| @@ -13231,8 +13227,8 @@ static int tok_have_assign(operator op) | |
| static int is_right_associativity(operator prec) | |
| { | |
| - | return (prec == PREC(TOK_ASSIGN) || prec == PREC(TOK_EXPONENT) || |
| - | prec == PREC(TOK_CONDITIONAL)); |
| + | return (prec == PREC(TOK_ASSIGN) || prec == PREC(TOK_EXPONENT) |
| + | || prec == PREC(TOK_CONDITIONAL)); |
| } | |
| @@ -13255,38 +13251,37 @@ static chk_var_recursive_looped_t *prev_chk_var_recursive; | |
| static int arith_lookup_val(v_n_t *t) | |
| { | |
| - | if(t->var) { |
| - | const char * p = lookupvar(t->var); |
| + | if (t->var) { |
| + | const char * p = lookupvar(t->var); |
| - | if(p) { |
| - | int errcode; |
| + | if (p) { |
| + | int errcode; |
| - | /* recursive try as expression */ |
| - | chk_var_recursive_looped_t *cur; |
| - | chk_var_recursive_looped_t cur_save; |
| + | /* recursive try as expression */ |
| + | chk_var_recursive_looped_t *cur; |
| + | chk_var_recursive_looped_t cur_save; |
| - | for(cur = prev_chk_var_recursive; cur; cur = cur->next) { |
| - | if(strcmp(cur->var, t->var) == 0) { |
| - | /* expression recursion loop detected */ |
| - | return -5; |
| - | } |
| - | } |
| - | /* save current lookuped var name */ |
| - | cur = prev_chk_var_recursive; |
| - | cur_save.var = t->var; |
| - | cur_save.next = cur; |
| - | prev_chk_var_recursive = &cur_save; |
| + | for (cur = prev_chk_var_recursive; cur; cur = cur->next) { |
| + | if (strcmp(cur->var, t->var) == 0) { |
| + | /* expression recursion loop detected */ |
| + | return -5; |
| + | } |
| + | } |
| + | /* save current lookuped var name */ |
| + | cur = prev_chk_var_recursive; |
| + | cur_save.var = t->var; |
| + | cur_save.next = cur; |
| + | prev_chk_var_recursive = &cur_save; |
| - | t->val = arith (p, &errcode); |
| - | /* restore previous ptr after recursiving */ |
| - | prev_chk_var_recursive = cur; |
| - | return errcode; |
| - | } else { |
| - | /* allow undefined var as 0 */ |
| - | t->val = 0; |
| + | t->val = arith (p, &errcode); |
| + | /* restore previous ptr after recursiving */ |
| + | prev_chk_var_recursive = cur; |
| + | return errcode; |
| + | } |
| + | /* allow undefined var as 0 */ |
| + | t->val = 0; |
| } | |
| - | } |
| - | return 0; |
| + | return 0; |
| } | |
| /* "applying" a token means performing it on the top elements on the integer | |
| @@ -13298,13 +13293,13 @@ static int arith_apply(operator op, v_n_t *numstack, v_n_t **numstackptr) | |
| arith_t numptr_val, rez; | |
| int ret_arith_lookup_val; | |
| - | if (NUMPTR == numstack) goto err; /* There is no operator that can work |
| - | without arguments */ |
| + | /* There is no operator that can work without arguments */ |
| + | if (NUMPTR == numstack) goto err; |
| numptr_m1 = NUMPTR - 1; | |
| /* check operand is var with noninteger value */ | |
| ret_arith_lookup_val = arith_lookup_val(numptr_m1); | |
| - | if(ret_arith_lookup_val) |
| + | if (ret_arith_lookup_val) |
| return ret_arith_lookup_val; | |
| rez = numptr_m1->val; | |
| @@ -13321,102 +13316,102 @@ static int arith_apply(operator op, v_n_t *numstack, v_n_t **numstackptr) | |
| else if (op != TOK_UPLUS) { | |
| /* Binary operators */ | |
| - | /* check and binary operators need two arguments */ |
| - | if (numptr_m1 == numstack) goto err; |
| - | |
| - | /* ... and they pop one */ |
| - | --NUMPTR; |
| - | numptr_val = rez; |
| - | if (op == TOK_CONDITIONAL) { |
| - | if(! numptr_m1->contidional_second_val_initialized) { |
| - | /* protect $((expr1 ? expr2)) without ": expr" */ |
| - | goto err; |
| - | } |
| - | rez = numptr_m1->contidional_second_val; |
| - | } else if(numptr_m1->contidional_second_val_initialized) { |
| - | /* protect $((expr1 : expr2)) without "expr ? " */ |
| - | goto err; |
| - | } |
| - | numptr_m1 = NUMPTR - 1; |
| - | if(op != TOK_ASSIGN) { |
| - | /* check operand is var with noninteger value for not '=' */ |
| - | ret_arith_lookup_val = arith_lookup_val(numptr_m1); |
| - | if(ret_arith_lookup_val) |
| - | return ret_arith_lookup_val; |
| - | } |
| - | if (op == TOK_CONDITIONAL) { |
| - | numptr_m1->contidional_second_val = rez; |
| - | } |
| - | rez = numptr_m1->val; |
| - | if (op == TOK_BOR || op == TOK_OR_ASSIGN) |
| + | /* check and binary operators need two arguments */ |
| + | if (numptr_m1 == numstack) goto err; |
| + | |
| + | /* ... and they pop one */ |
| + | --NUMPTR; |
| + | numptr_val = rez; |
| + | if (op == TOK_CONDITIONAL) { |
| + | if (! numptr_m1->contidional_second_val_initialized) { |
| + | /* protect $((expr1 ? expr2)) without ": expr" */ |
| + | goto err; |
| + | } |
| + | rez = numptr_m1->contidional_second_val; |
| + | } else if (numptr_m1->contidional_second_val_initialized) { |
| + | /* protect $((expr1 : expr2)) without "expr ? " */ |
| + | goto err; |
| + | } |
| + | numptr_m1 = NUMPTR - 1; |
| + | if (op != TOK_ASSIGN) { |
| + | /* check operand is var with noninteger value for not '=' */ |
| + | ret_arith_lookup_val = arith_lookup_val(numptr_m1); |
| + | if (ret_arith_lookup_val) |
| + | return ret_arith_lookup_val; |
| + | } |
| + | if (op == TOK_CONDITIONAL) { |
| + | numptr_m1->contidional_second_val = rez; |
| + | } |
| + | rez = numptr_m1->val; |
| + | if (op == TOK_BOR || op == TOK_OR_ASSIGN) |
| rez |= numptr_val; | |
| - | else if (op == TOK_OR) |
| + | else if (op == TOK_OR) |
| rez = numptr_val || rez; | |
| - | else if (op == TOK_BAND || op == TOK_AND_ASSIGN) |
| + | else if (op == TOK_BAND || op == TOK_AND_ASSIGN) |
| rez &= numptr_val; | |
| - | else if (op == TOK_BXOR || op == TOK_XOR_ASSIGN) |
| + | else if (op == TOK_BXOR || op == TOK_XOR_ASSIGN) |
| rez ^= numptr_val; | |
| - | else if (op == TOK_AND) |
| + | else if (op == TOK_AND) |
| rez = rez && numptr_val; | |
| - | else if (op == TOK_EQ) |
| + | else if (op == TOK_EQ) |
| rez = (rez == numptr_val); | |
| - | else if (op == TOK_NE) |
| + | else if (op == TOK_NE) |
| rez = (rez != numptr_val); | |
| - | else if (op == TOK_GE) |
| + | else if (op == TOK_GE) |
| rez = (rez >= numptr_val); | |
| - | else if (op == TOK_RSHIFT || op == TOK_RSHIFT_ASSIGN) |
| + | else if (op == TOK_RSHIFT || op == TOK_RSHIFT_ASSIGN) |
| rez >>= numptr_val; | |
| - | else if (op == TOK_LSHIFT || op == TOK_LSHIFT_ASSIGN) |
| + | else if (op == TOK_LSHIFT || op == TOK_LSHIFT_ASSIGN) |
| rez <<= numptr_val; | |
| - | else if (op == TOK_GT) |
| + | else if (op == TOK_GT) |
| rez = (rez > numptr_val); | |
| - | else if (op == TOK_LT) |
| + | else if (op == TOK_LT) |
| rez = (rez < numptr_val); | |
| - | else if (op == TOK_LE) |
| + | else if (op == TOK_LE) |
| rez = (rez <= numptr_val); | |
| - | else if (op == TOK_MUL || op == TOK_MUL_ASSIGN) |
| + | else if (op == TOK_MUL || op == TOK_MUL_ASSIGN) |
| rez *= numptr_val; | |
| - | else if (op == TOK_ADD || op == TOK_PLUS_ASSIGN) |
| + | else if (op == TOK_ADD || op == TOK_PLUS_ASSIGN) |
| rez += numptr_val; | |
| - | else if (op == TOK_SUB || op == TOK_MINUS_ASSIGN) |
| + | else if (op == TOK_SUB || op == TOK_MINUS_ASSIGN) |
| rez -= numptr_val; | |
| - | else if (op == TOK_ASSIGN || op == TOK_COMMA) |
| + | else if (op == TOK_ASSIGN || op == TOK_COMMA) |
| rez = numptr_val; | |
| - | else if (op == TOK_CONDITIONAL_SEP) { |
| + | else if (op == TOK_CONDITIONAL_SEP) { |
| if (numptr_m1 == numstack) { | |
| - | /* protect $((expr : expr)) without "expr ? " */ |
| - | goto err; |
| + | /* protect $((expr : expr)) without "expr ? " */ |
| + | goto err; |
| } | |
| numptr_m1->contidional_second_val_initialized = op; | |
| numptr_m1->contidional_second_val = numptr_val; | |
| - | } |
| - | else if (op == TOK_CONDITIONAL) { |
| + | } |
| + | else if (op == TOK_CONDITIONAL) { |
| rez = rez ? | |
| - | numptr_val : numptr_m1->contidional_second_val; |
| - | } |
| - | else if(op == TOK_EXPONENT) { |
| - | if(numptr_val < 0) |
| + | numptr_val : numptr_m1->contidional_second_val; |
| + | } |
| + | else if (op == TOK_EXPONENT) { |
| + | if (numptr_val < 0) |
| return -3; /* exponent less than 0 */ | |
| else { | |
| arith_t c = 1; | |
| - | if(numptr_val) |
| - | while(numptr_val--) |
| + | if (numptr_val) |
| + | while (numptr_val--) |
| c *= rez; | |
| rez = c; | |
| } | |
| - | } |
| - | else if(numptr_val==0) /* zero divisor check */ |
| + | } |
| + | else if (numptr_val==0) /* zero divisor check */ |
| return -2; | |
| - | else if (op == TOK_DIV || op == TOK_DIV_ASSIGN) |
| + | else if (op == TOK_DIV || op == TOK_DIV_ASSIGN) |
| rez /= numptr_val; | |
| - | else if (op == TOK_REM || op == TOK_REM_ASSIGN) |
| + | else if (op == TOK_REM || op == TOK_REM_ASSIGN) |
| rez %= numptr_val; | |
| } | |
| - | if(tok_have_assign(op)) { |
| + | if (tok_have_assign(op)) { |
| char buf[32]; | |
| - | if(numptr_m1->var == NULL) { |
| + | if (numptr_m1->var == NULL) { |
| /* Hmm, 1=2 ? */ | |
| goto err; | |
| } | |
| @@ -13428,9 +13423,9 @@ static int arith_apply(operator op, v_n_t *numstack, v_n_t **numstackptr) | |
| #endif | |
| setvar(numptr_m1->var, buf, 0); | |
| /* after saving, make previous value for v++ or v-- */ | |
| - | if(op == TOK_POST_INC) |
| + | if (op == TOK_POST_INC) |
| rez--; | |
| - | else if(op == TOK_POST_DEC) |
| + | else if (op == TOK_POST_DEC) |
| rez++; | |
| } | |
| numptr_m1->val = rez; | |
| @@ -13491,73 +13486,74 @@ static const char op_tokens[] = { | |
| static arith_t arith(const char *expr, int *perrcode) | |
| { | |
| - | char arithval; /* Current character under analysis */ |
| - | operator lasttok, op; |
| - | operator prec; |
| + | char arithval; /* Current character under analysis */ |
| + | operator lasttok, op; |
| + | operator prec; |
| - | const char *p = endexpression; |
| - | int errcode; |
| + | const char *p = endexpression; |
| + | int errcode; |
| - | size_t datasizes = strlen(expr) + 2; |
| + | size_t datasizes = strlen(expr) + 2; |
| - | /* Stack of integers */ |
| - | /* The proof that there can be no more than strlen(startbuf)/2+1 integers |
| - | * in any given correct or incorrect expression is left as an exercise to |
| - | * the reader. */ |
| - | v_n_t *numstack = alloca(((datasizes)/2)*sizeof(v_n_t)), |
| - | *numstackptr = numstack; |
| - | /* Stack of operator tokens */ |
| - | operator *stack = alloca((datasizes) * sizeof(operator)), |
| - | *stackptr = stack; |
| + | /* Stack of integers */ |
| + | /* The proof that there can be no more than strlen(startbuf)/2+1 integers |
| + | * in any given correct or incorrect expression is left as an exercise to |
| + | * the reader. */ |
| + | v_n_t *numstack = alloca(((datasizes)/2)*sizeof(v_n_t)), |
| + | *numstackptr = numstack; |
| + | /* Stack of operator tokens */ |
| + | operator *stack = alloca((datasizes) * sizeof(operator)), |
| + | *stackptr = stack; |
| - | *stackptr++ = lasttok = TOK_LPAREN; /* start off with a left paren */ |
| - | *perrcode = errcode = 0; |
| + | *stackptr++ = lasttok = TOK_LPAREN; /* start off with a left paren */ |
| + | *perrcode = errcode = 0; |
| - | while(1) { |
| - | if ((arithval = *expr) == 0) { |
| - | if (p == endexpression) { |
| - | /* Null expression. */ |
| - | return 0; |
| - | } |
| + | while (1) { |
| + | if ((arithval = *expr) == 0) { |
| + | if (p == endexpression) { |
| + | /* Null expression. */ |
| + | return 0; |
| + | } |
| - | /* This is only reached after all tokens have been extracted from the |
| - | * input stream. If there are still tokens on the operator stack, they |
| - | * are to be applied in order. At the end, there should be a final |
| - | * result on the integer stack */ |
| + | /* This is only reached after all tokens have been extracted from the |
| + | * input stream. If there are still tokens on the operator stack, they |
| + | * are to be applied in order. At the end, there should be a final |
| + | * result on the integer stack */ |
| - | if (expr != endexpression + 1) { |
| - | /* If we haven't done so already, */ |
| - | /* append a closing right paren */ |
| - | expr = endexpression; |
| - | /* and let the loop process it. */ |
| - | continue; |
| - | } |
| - | /* At this point, we're done with the expression. */ |
| - | if (numstackptr != numstack+1) { |
| - | /* ... but if there isn't, it's bad */ |
| - | err: |
| - | return (*perrcode = -1); |
| - | } |
| - | if(numstack->var) { |
| - | /* expression is $((var)) only, lookup now */ |
| - | errcode = arith_lookup_val(numstack); |
| + | if (expr != endexpression + 1) { |
| + | /* If we haven't done so already, */ |
| + | /* append a closing right paren */ |
| + | expr = endexpression; |
| + | /* and let the loop process it. */ |
| + | continue; |
| + | } |
| + | /* At this point, we're done with the expression. */ |
| + | if (numstackptr != numstack+1) { |
| + | /* ... but if there isn't, it's bad */ |
| + | err: |
| + | return (*perrcode = -1); |
| + | } |
| + | if (numstack->var) { |
| + | /* expression is $((var)) only, lookup now */ |
| + | errcode = arith_lookup_val(numstack); |
| + | } |
| + | ret: |
| + | *perrcode = errcode; |
| + | return numstack->val; |
| } | |
| - | ret: |
| - | *perrcode = errcode; |
| - | return numstack->val; |
| - | } else { |
| + | |
| /* Continue processing the expression. */ | |
| if (arith_isspace(arithval)) { | |
| /* Skip whitespace */ | |
| goto prologue; | |
| } | |
| - | if((p = endofname(expr)) != expr) { |
| + | if ((p = endofname(expr)) != expr) { |
| size_t var_name_size = (p-expr) + 1; /* trailing zero */ | |
| numstackptr->var = alloca(var_name_size); | |
| safe_strncpy(numstackptr->var, expr, var_name_size); | |
| expr = p; | |
| - | num: |
| + | num: |
| numstackptr->contidional_second_val_initialized = 0; | |
| numstackptr++; | |
| lasttok = TOK_NUM; | |
| @@ -13571,22 +13567,22 @@ static arith_t arith(const char *expr, int *perrcode) | |
| #endif | |
| goto num; | |
| } | |
| - | for(p = op_tokens; ; p++) { |
| + | for (p = op_tokens; ; p++) { |
| const char *o; | |
| - | if(*p == 0) { |
| + | if (*p == 0) { |
| /* strange operator not found */ | |
| goto err; | |
| } | |
| - | for(o = expr; *p && *o == *p; p++) |
| + | for (o = expr; *p && *o == *p; p++) |
| o++; | |
| - | if(! *p) { |
| + | if (! *p) { |
| /* found */ | |
| expr = o - 1; | |
| break; | |
| } | |
| /* skip tail uncompared token */ | |
| - | while(*p) |
| + | while (*p) |
| p++; | |
| /* skip zero delim */ | |
| p++; | |
| @@ -13594,8 +13590,8 @@ static arith_t arith(const char *expr, int *perrcode) | |
| op = p[1]; | |
| /* post grammar: a++ reduce to num */ | |
| - | if(lasttok == TOK_POST_INC || lasttok == TOK_POST_DEC) |
| - | lasttok = TOK_NUM; |
| + | if (lasttok == TOK_POST_INC || lasttok == TOK_POST_DEC) |
| + | lasttok = TOK_NUM; |
| /* Plus and minus are binary (not unary) _only_ if the last | |
| * token was as number, or a right paren (which pretends to be | |
| @@ -13603,18 +13599,18 @@ static arith_t arith(const char *expr, int *perrcode) | |
| * It makes sense. */ | |
| if (lasttok != TOK_NUM) { | |
| switch (op) { | |
| - | case TOK_ADD: |
| - | op = TOK_UPLUS; |
| - | break; |
| - | case TOK_SUB: |
| - | op = TOK_UMINUS; |
| - | break; |
| - | case TOK_POST_INC: |
| - | op = TOK_PRE_INC; |
| - | break; |
| - | case TOK_POST_DEC: |
| - | op = TOK_PRE_DEC; |
| - | break; |
| + | case TOK_ADD: |
| + | op = TOK_UPLUS; |
| + | break; |
| + | case TOK_SUB: |
| + | op = TOK_UMINUS; |
| + | break; |
| + | case TOK_POST_INC: |
| + | op = TOK_PRE_INC; |
| + | break; |
| + | case TOK_POST_DEC: |
| + | op = TOK_PRE_DEC; |
| + | break; |
| } | |
| } | |
| /* We don't want a unary operator to cause recursive descent on the | |
| @@ -13636,30 +13632,30 @@ static arith_t arith(const char *expr, int *perrcode) | |
| goto err; | |
| } | |
| while (stackptr != stack) { | |
| - | if (op == TOK_RPAREN) { |
| - | /* The algorithm employed here is simple: while we don't |
| - | * hit an open paren nor the bottom of the stack, pop |
| - | * tokens and apply them */ |
| - | if (stackptr[-1] == TOK_LPAREN) { |
| - | --stackptr; |
| - | /* Any operator directly after a */ |
| - | lasttok = TOK_NUM; |
| - | /* close paren should consider itself binary */ |
| - | goto prologue; |
| - | } |
| - | } else { |
| - | operator prev_prec = PREC(stackptr[-1]); |
| + | if (op == TOK_RPAREN) { |
| + | /* The algorithm employed here is simple: while we don't |
| + | * hit an open paren nor the bottom of the stack, pop |
| + | * tokens and apply them */ |
| + | if (stackptr[-1] == TOK_LPAREN) { |
| + | --stackptr; |
| + | /* Any operator directly after a */ |
| + | lasttok = TOK_NUM; |
| + | /* close paren should consider itself binary */ |
| + | goto prologue; |
| + | } |
| + | } else { |
| + | operator prev_prec = PREC(stackptr[-1]); |
| - | convert_prec_is_assing(prec); |
| - | convert_prec_is_assing(prev_prec); |
| - | if (prev_prec < prec) |
| - | break; |
| - | /* check right assoc */ |
| - | if(prev_prec == prec && is_right_associativity(prec)) |
| - | break; |
| - | } |
| - | errcode = arith_apply(*--stackptr, numstack, &numstackptr); |
| - | if(errcode) goto ret; |
| + | convert_prec_is_assing(prec); |
| + | convert_prec_is_assing(prev_prec); |
| + | if (prev_prec < prec) |
| + | break; |
| + | /* check right assoc */ |
| + | if (prev_prec == prec && is_right_associativity(prec)) |
| + | break; |
| + | } |
| + | errcode = arith_apply(*--stackptr, numstack, &numstackptr); |
| + | if (errcode) goto ret; |
| } | |
| if (op == TOK_RPAREN) { | |
| goto err; | |
| @@ -13668,11 +13664,9 @@ static arith_t arith(const char *expr, int *perrcode) | |
| /* Push this operator to the stack and remember it. */ | |
| *stackptr++ = lasttok = op; | |
| - | |
| - | prologue: |
| + | prologue: |
| ++expr; | |
| - | } |
| - | } |
| + | } /* while */ |
| } | |
| #endif /* CONFIG_ASH_MATH_SUPPORT */ | |