diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 282 |
1 files changed, 119 insertions, 163 deletions
diff --git a/shell/ash.c b/shell/ash.c index a4ce3ffcd..981532120 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -82,13 +82,13 @@ #include <time.h> #include <fnmatch.h> -#ifdef CONFIG_ASH_JOB_CONTROL +#if ENABLE_ASH_JOB_CONTROL #define JOBS 1 #else #define JOBS 0 #endif -#if JOBS || defined(CONFIG_ASH_READ_NCHARS) +#if JOBS || ENABLE_ASH_READ_NCHARS #include <termios.h> #endif @@ -111,7 +111,7 @@ static int *dash_errno; #endif -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS /* alias.h */ #define ALIASINUSE 1 @@ -225,7 +225,7 @@ static void exerror(int, const char *, ...) ATTRIBUTE_NORETURN; static void sh_warnx(const char *, ...); -#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE +#if ENABLE_ASH_OPTIMIZE_FOR_SIZE static void inton(void) { if (--suppressint == 0 && intpending) { @@ -254,7 +254,7 @@ static void forceinton(void) if (intpending) onint(); \ 0; \ }) -#endif /* CONFIG_ASH_OPTIMIZE_FOR_SIZE */ +#endif /* ASH_OPTIMIZE_FOR_SIZE */ /* expand.h */ @@ -289,7 +289,7 @@ static void expandarg(union node *, struct arglist *, int); static char *_rmescapes(char *, int); static int casematch(union node *, char *); -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT static void expari(int); #endif @@ -340,7 +340,6 @@ struct backcmd { /* result of evalbackcmd */ #define NNOT 25 - struct ncmd { int type; union node *assign; @@ -348,28 +347,24 @@ struct ncmd { union node *redirect; }; - struct npipe { int type; int backgnd; struct nodelist *cmdlist; }; - struct nredir { int type; union node *n; union node *redirect; }; - struct nbinary { int type; union node *ch1; union node *ch2; }; - struct nif { int type; union node *test; @@ -377,7 +372,6 @@ struct nif { union node *elsepart; }; - struct nfor { int type; union node *args; @@ -385,14 +379,12 @@ struct nfor { char *var; }; - struct ncase { int type; union node *expr; union node *cases; }; - struct nclist { int type; union node *next; @@ -400,7 +392,6 @@ struct nclist { union node *body; }; - struct narg { int type; union node *next; @@ -408,7 +399,6 @@ struct narg { struct nodelist *backquote; }; - struct nfile { int type; union node *next; @@ -417,7 +407,6 @@ struct nfile { char *expfname; }; - struct ndup { int type; union node *next; @@ -426,7 +415,6 @@ struct ndup { union node *vname; }; - struct nhere { int type; union node *next; @@ -434,13 +422,11 @@ struct nhere { union node *doc; }; - struct nnot { int type; union node *com; }; - union node { int type; struct ncmd ncmd; @@ -458,13 +444,11 @@ union node { struct nnot nnot; }; - struct nodelist { struct nodelist *next; union node *n; }; - struct funcnode { int count; union node n; @@ -529,7 +513,7 @@ struct strpush { struct strpush *prev; /* preceding string on stack */ char *prevstring; int prevnleft; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS struct alias *ap; /* if push was associated with an alias */ #endif char *string; /* remember the string since it may change */ @@ -709,7 +693,7 @@ static const char *tokname(int tok) #define CSPCL 13 /* these terminate a word */ #define CIGN 14 /* character should be ignored */ -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS #define SYNBASE 130 #define PEOF -130 #define PEOA -129 @@ -741,7 +725,7 @@ static const char *tokname(int tok) * This file was generated by the mksyntax program. */ -#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE +#if ENABLE_ASH_OPTIMIZE_FOR_SIZE #define USE_SIT_FUNCTION #endif @@ -751,9 +735,9 @@ static const char *tokname(int tok) #define SQSYNTAX 2 /* in single quotes */ #define ARISYNTAX 3 /* in arithmetic */ -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT static const char S_I_T[][4] = { -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS {CSPCL, CIGN, CIGN, CIGN}, /* 0, PEOA */ #endif {CSPCL, CWORD, CWORD, CWORD}, /* 1, ' ' */ @@ -775,7 +759,7 @@ static const char S_I_T[][4] = { }; #else static const char S_I_T[][3] = { -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS {CSPCL, CIGN, CIGN}, /* 0, PEOA */ #endif {CSPCL, CWORD, CWORD}, /* 1, ' ' */ @@ -795,7 +779,7 @@ static const char S_I_T[][3] = { {CCTL, CCTL, CCTL} /* 14, CTLESC ... */ #endif }; -#endif /* CONFIG_ASH_MATH_SUPPORT */ +#endif /* ASH_MATH_SUPPORT */ #ifdef USE_SIT_FUNCTION @@ -804,7 +788,7 @@ static const char S_I_T[][3] = { static int SIT(int c, int syntax) { static const char spec_symbls[] = "\t\n !\"$&'()*-/:;<=>?[\\]`|}~"; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS static const char syntax_index_table[] = { 1, 2, 1, 3, 4, 5, 1, 6, /* "\t\n !\"$&'" */ 7, 8, 3, 3, 3, 3, 1, 1, /* "()*-/:;<" */ @@ -824,7 +808,7 @@ static int SIT(int c, int syntax) if (c == PEOF) /* 2^8+2 */ return CENDFILE; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS if (c == PEOA) /* 2^8+1 */ indx = 0; else @@ -844,7 +828,7 @@ static int SIT(int c, int syntax) #define SIT(c, syntax) S_I_T[(int)syntax_index_table[((int)c)+SYNBASE]][syntax] -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS #define CSPCL_CIGN_CIGN_CIGN 0 #define CSPCL_CWORD_CWORD_CWORD 1 #define CNL_CNL_CNL_CNL 2 @@ -880,7 +864,7 @@ static int SIT(int c, int syntax) static const char syntax_index_table[258] = { /* BASESYNTAX_DQSYNTAX_SQSYNTAX_ARISYNTAX */ /* 0 PEOF */ CENDFILE_CENDFILE_CENDFILE_CENDFILE, -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS /* 1 PEOA */ CSPCL_CIGN_CIGN_CIGN, #endif /* 2 -128 0x80 */ CWORD_CWORD_CWORD_CWORD, @@ -1215,15 +1199,15 @@ static int bgcmd(int, char **); #endif static int breakcmd(int, char **); static int cdcmd(int, char **); -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD static int commandcmd(int, char **); #endif static int dotcmd(int, char **); static int evalcmd(int, char **); -#ifdef CONFIG_ASH_BUILTIN_ECHO +#if ENABLE_ASH_BUILTIN_ECHO static int echocmd(int, char **); #endif -#ifdef CONFIG_ASH_BUILTIN_TEST +#if ENABLE_ASH_BUILTIN_TEST static int testcmd(int, char **); #endif static int execcmd(int, char **); @@ -1233,7 +1217,7 @@ static int falsecmd(int, char **); #if JOBS static int fgcmd(int, char **); #endif -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS static int getoptscmd(int, char **); #endif static int hashcmd(int, char **); @@ -1243,7 +1227,7 @@ static int helpcmd(int argc, char **argv); #if JOBS static int jobscmd(int, char **); #endif -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT static int letcmd(int, char **); #endif static int localcmd(int, char **); @@ -1266,7 +1250,7 @@ static int killcmd(int, char **); /* mail.h */ -#ifdef CONFIG_ASH_MAIL +#if ENABLE_ASH_MAIL static void chkmail(void); static void changemail(const char *); #endif @@ -1314,11 +1298,11 @@ struct builtincmd { static const struct builtincmd builtincmd[] = { { BUILTIN_SPEC_REG ".", dotcmd }, { BUILTIN_SPEC_REG ":", truecmd }, -#ifdef CONFIG_ASH_BUILTIN_TEST +#if ENABLE_ASH_BUILTIN_TEST { BUILTIN_REGULAR "[", testcmd }, { BUILTIN_REGULAR "[[", testcmd }, #endif -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS { BUILTIN_REG_ASSG "alias", aliascmd }, #endif #if JOBS @@ -1327,11 +1311,11 @@ static const struct builtincmd builtincmd[] = { { BUILTIN_SPEC_REG "break", breakcmd }, { BUILTIN_REGULAR "cd", cdcmd }, { BUILTIN_NOSPEC "chdir", cdcmd }, -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD { BUILTIN_REGULAR "command", commandcmd }, #endif { BUILTIN_SPEC_REG "continue", breakcmd }, -#ifdef CONFIG_ASH_BUILTIN_ECHO +#if ENABLE_ASH_BUILTIN_ECHO { BUILTIN_REGULAR "echo", echocmd }, #endif { BUILTIN_SPEC_REG "eval", evalcmd }, @@ -1342,7 +1326,7 @@ static const struct builtincmd builtincmd[] = { #if JOBS { BUILTIN_REGULAR "fg", fgcmd }, #endif -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS { BUILTIN_REGULAR "getopts", getoptscmd }, #endif { BUILTIN_NOSPEC "hash", hashcmd }, @@ -1353,7 +1337,7 @@ static const struct builtincmd builtincmd[] = { { BUILTIN_REGULAR "jobs", jobscmd }, { BUILTIN_REGULAR "kill", killcmd }, #endif -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT { BUILTIN_NOSPEC "let", letcmd }, #endif { BUILTIN_ASSIGN "local", localcmd }, @@ -1364,7 +1348,7 @@ static const struct builtincmd builtincmd[] = { { BUILTIN_SPEC_REG "set", setcmd }, { BUILTIN_SPEC_REG "shift", shiftcmd }, { BUILTIN_SPEC_REG "source", dotcmd }, -#ifdef CONFIG_ASH_BUILTIN_TEST +#if ENABLE_ASH_BUILTIN_TEST { BUILTIN_REGULAR "test", testcmd }, #endif { BUILTIN_SPEC_REG "times", timescmd }, @@ -1373,7 +1357,7 @@ static const struct builtincmd builtincmd[] = { { BUILTIN_NOSPEC "type", typecmd }, { BUILTIN_NOSPEC "ulimit", ulimitcmd }, { BUILTIN_REGULAR "umask", umaskcmd }, -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS { BUILTIN_REGULAR "unalias", unaliascmd }, #endif { BUILTIN_SPEC_REG "unset", unsetcmd }, @@ -1411,7 +1395,7 @@ static void changepath(const char *); static void defun(char *, union node *); static void unsetfunc(const char *); -#ifdef CONFIG_ASH_MATH_SUPPORT_64 +#if ENABLE_ASH_MATH_SUPPORT_64 typedef int64_t arith_t; #define arith_t_type (long long) #else @@ -1419,12 +1403,12 @@ typedef long arith_t; #define arith_t_type (long) #endif -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT static arith_t dash_arith(const char *); static arith_t arith(const char *expr, int *perrcode); #endif -#ifdef CONFIG_ASH_RANDOM_SUPPORT +#if ENABLE_ASH_RANDOM_SUPPORT static unsigned long rseed; static void change_random(const char *); # ifndef DYNAMIC_VAR @@ -1480,11 +1464,11 @@ static struct localvar *localvars; * Shell variables. */ -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS static void getoptsreset(const char *); #endif -#ifdef CONFIG_LOCALE_SUPPORT +#if ENABLE_LOCALE_SUPPORT static void change_lc_all(const char *value); static void change_lc_ctype(const char *value); #endif @@ -1508,7 +1492,7 @@ static struct var varinit[] = { { 0, VSTRFIXED|VTEXTFIXED|VUNSET, "IFS\0", 0 }, #endif -#ifdef CONFIG_ASH_MAIL +#if ENABLE_ASH_MAIL { 0, VSTRFIXED|VTEXTFIXED|VUNSET, "MAIL\0", changemail }, { 0, VSTRFIXED|VTEXTFIXED|VUNSET, "MAILPATH\0", changemail }, #endif @@ -1517,13 +1501,13 @@ static struct var varinit[] = { { 0, VSTRFIXED|VTEXTFIXED, "PS1=$ ", 0 }, { 0, VSTRFIXED|VTEXTFIXED, "PS2=> ", 0 }, { 0, VSTRFIXED|VTEXTFIXED, "PS4=+ ", 0 }, -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS { 0, VSTRFIXED|VTEXTFIXED, "OPTIND=1", getoptsreset }, #endif -#ifdef CONFIG_ASH_RANDOM_SUPPORT +#if ENABLE_ASH_RANDOM_SUPPORT {0, VSTRFIXED|VTEXTFIXED|VUNSET|VDYNAMIC, "RANDOM\0", change_random }, #endif -#ifdef CONFIG_LOCALE_SUPPORT +#if ENABLE_LOCALE_SUPPORT {0, VSTRFIXED | VTEXTFIXED | VUNSET, "LC_ALL\0", change_lc_all }, {0, VSTRFIXED | VTEXTFIXED | VUNSET, "LC_CTYPE\0", change_lc_ctype }, #endif @@ -1533,7 +1517,7 @@ static struct var varinit[] = { }; #define vifs varinit[0] -#ifdef CONFIG_ASH_MAIL +#if ENABLE_ASH_MAIL #define vmail (&vifs)[1] #define vmpath (&vmail)[1] #else @@ -1544,7 +1528,7 @@ static struct var varinit[] = { #define vps2 (&vps1)[1] #define vps4 (&vps2)[1] #define voptind (&vps4)[1] -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS #define vrandom (&voptind)[1] #else #define vrandom (&vps4)[1] @@ -1579,7 +1563,7 @@ static char **listvars(int, int, char ***); static int showvars(const char *, int, int); static void poplocalvars(void); static int unsetvar(const char *); -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS static int setvarsafe(const char *, const char *, int); #endif static int varcmp(const char *, const char *); @@ -1905,7 +1889,7 @@ struct shparam { int nparam; /* # of positional parameters (without $0) */ unsigned char malloc; /* if parameter list dynamically allocated */ char **p; /* parameter list */ -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS int optind; /* next parameter to be processed by getopts */ int optoff; /* used by getopts */ #endif @@ -2093,7 +2077,7 @@ reset(void) } } -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS static struct alias *atab[ATABSIZE]; static void setalias(const char *, const char *); @@ -2274,7 +2258,7 @@ __lookupalias(const char *name) { return app; } -#endif /* CONFIG_ASH_ALIAS */ +#endif /* ASH_ALIAS */ /* cd.c */ @@ -2531,7 +2515,6 @@ setpwd(const char *val, int setold) */ - static void exverror(int, const char *, va_list) ATTRIBUTE_NORETURN; /* @@ -2668,7 +2651,6 @@ static const char * errmsg(int e, const char *em) { if (e == ENOENT || e == ENOTDIR) { - return em; } return strerror(e); @@ -2771,7 +2753,6 @@ evalstring(char *s, int mask) } - /* * Evaluate a parse tree. The value is left in the global variable * exitstatus. @@ -2933,7 +2914,6 @@ skipping: if (evalskip == SKIPCONT && --skipcount <= 0) { } - static void evalfor(union node *n, int flags) { @@ -3002,7 +2982,6 @@ out: } - /* * Kick off a subshell to evaluate a tree. */ @@ -3037,7 +3016,6 @@ nofork: } - /* * Compute the names of the files in a redirection list. */ @@ -3075,7 +3053,6 @@ expredir(union node *n) } - /* * Evaluate a pipeline. All the processes in the pipeline are children * of the process creating the pipeline. (This differs from some versions @@ -3138,7 +3115,6 @@ evalpipe(union node *n, int flags) } - /* * Execute a command inside back quotes. If it's a builtin command, we * want to save its output in a block obtained from malloc. Otherwise @@ -3191,7 +3167,7 @@ out: result->fd, result->buf, result->nleft, result->jp)); } -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD static char ** parse_command_args(char **argv, const char **path) { char *cp, c; @@ -3231,7 +3207,7 @@ static int isassignment(const char *p) return *q == '='; } -#ifdef CONFIG_ASH_EXPAND_PRMT +#if ENABLE_ASH_EXPAND_PRMT static const char *expandstr(const char *ps); #else #define expandstr(s) s @@ -3373,7 +3349,7 @@ evalcommand(union node *cmd, int flags) spclbltin = IS_BUILTIN_SPECIAL(cmdentry.u.cmd); if (cmdentry.u.cmd == EXECCMD) cmd_is_exec++; -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD if (cmdentry.u.cmd == COMMANDCMD) { path = oldpath; @@ -3523,7 +3499,7 @@ evalfun(struct funcnode *func, int argc, char **argv, int flags) INTON; shellparam.nparam = argc - 1; shellparam.p = argv + 1; -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS shellparam.optind = 1; shellparam.optoff = -1; #endif @@ -3768,7 +3744,7 @@ tryexec(char *cmd, char **argv, char **envp) #if ENABLE_FEATURE_SH_STANDALONE_SHELL if (find_applet_by_name(cmd) != NULL) { /* re-exec ourselves with the new arguments */ - execve(CONFIG_BUSYBOX_EXEC_PATH,argv,envp); + execve(CONFIG_BUSYBOX_EXEC_PATH, argv, envp); /* If they called chroot or otherwise made the binary no longer * executable, fall through */ } @@ -4115,7 +4091,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. @@ -4140,7 +4115,6 @@ hashcd(void) } - /* * Fix command hash table when PATH changed. * Called before PATH is changed. The argument is the new value of PATH; @@ -4357,7 +4331,7 @@ unsetfunc(const char *name) */ -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD static int describe_command(char *command, int describe_command_verbose) #else @@ -4368,7 +4342,7 @@ describe_command(char *command) { struct cmdentry entry; struct tblentry *cmdp; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS const struct alias *ap; #endif const char *path = pathval(); @@ -4383,7 +4357,7 @@ describe_command(char *command) goto out; } -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS /* Then look at the aliases */ if ((ap = lookupalias(command, 0)) != NULL) { if (describe_command_verbose) { @@ -4465,7 +4439,7 @@ typecmd(int argc, char **argv) int err = 0; for (i = 1; i < argc; i++) { -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD err |= describe_command(argv[i], 1); #else err |= describe_command(argv[i]); @@ -4474,7 +4448,7 @@ typecmd(int argc, char **argv) return err; } -#ifdef CONFIG_ASH_CMDCMD +#if ENABLE_ASH_CMDCMD static int commandcmd(int argc, char **argv) { @@ -4670,7 +4644,7 @@ argstr(char *p, int flag) CTLVAR, CTLBACKQ, CTLBACKQ | CTLQUOTE, -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT CTLENDARI, #endif 0 @@ -4707,7 +4681,7 @@ start: length += strcspn(p + length, reject); c = p[length]; if (c && (!(c & 0x80) -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT || c == CTLENDARI #endif )) { @@ -4785,7 +4759,7 @@ addquote: expbackq(argbackq->n, c, quotes); argbackq = argbackq->next; goto start; -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT case CTLENDARI: p--; expari(quotes); @@ -4886,7 +4860,7 @@ removerecordregions(int endoff) } -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT /* * Expand arithmetic expression. Backup to start of expression, * evaluate, place result in (backed up) result, adjust string position. @@ -5474,7 +5448,6 @@ ifsbreakup(char *string, struct arglist *arglist) int ifsspc; int nulonly; - start = string; if (ifslastp != NULL) { ifsspc = 0; @@ -5790,7 +5763,7 @@ msort(struct strlist *list, int len) p = msort(p, len - half); /* sort second half */ lpp = &list; for (;;) { -#ifdef CONFIG_LOCALE_SUPPORT +#if ENABLE_LOCALE_SUPPORT if (strcoll(p->text, q->text) < 0) #else if (strcmp(p->text, q->text) < 0) @@ -5925,7 +5898,7 @@ cvtnum(arith_t num) int len; expdest = makestrspace(32, expdest); -#ifdef CONFIG_ASH_MATH_SUPPORT_64 +#if ENABLE_ASH_MATH_SUPPORT_64 len = fmtstr(expdest, 32, "%lld", (long long) num); #else len = fmtstr(expdest, 32, "%ld", num); @@ -5971,7 +5944,7 @@ static void pushfile(void); #define pgetc_as_macro() (--parsenleft >= 0? SC2INT(*parsenextc++) : preadbuffer()) -#ifdef CONFIG_ASH_OPTIMIZE_FOR_SIZE +#if ENABLE_ASH_OPTIMIZE_FOR_SIZE #define pgetc_macro() pgetc() static int pgetc(void) @@ -5991,7 +5964,7 @@ pgetc(void) /* * Same as pgetc(), but ignores PEOA. */ -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS static int pgetc2(void) { int c; @@ -6131,7 +6104,7 @@ preadbuffer(void) char savec; while (parsefile->strpush) { -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS if (parsenleft == -1 && parsefile->strpush->ap && parsenextc[-1] != ' ' && parsenextc[-1] != '\t') { return PEOA; @@ -6227,7 +6200,7 @@ pushstring(char *s, void *ap) sp = parsefile->strpush = &(parsefile->basestrpush); sp->prevstring = parsenextc; sp->prevnleft = parsenleft; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS sp->ap = (struct alias *)ap; if (ap) { ((struct alias *)ap)->flag |= ALIASINUSE; @@ -6245,7 +6218,7 @@ popstring(void) struct strpush *sp = parsefile->strpush; INTOFF; -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS if (sp->ap) { if (parsenextc[-1] == ' ' || parsenextc[-1] == '\t') { checkkwd |= CHKALIAS; @@ -7705,7 +7678,7 @@ cmdputs(const char *s) case CTLBACKQ+CTLQUOTE: str = "\"$(...)\""; goto dostr; -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT case CTLARI: str = "$(("; goto dostr; @@ -7805,7 +7778,7 @@ getstatus(struct job *job) { return retval; } -#ifdef CONFIG_ASH_MAIL +#if ENABLE_ASH_MAIL /* mail.c */ /* @@ -7875,7 +7848,7 @@ changemail(const char *val) mail_var_path_changed++; } -#endif /* CONFIG_ASH_MAIL */ +#endif /* ASH_MAIL */ /* main.c */ @@ -7951,7 +7924,7 @@ int ash_main(int argc, char **argv) #endif rootpid = getpid(); -#ifdef CONFIG_ASH_RANDOM_SUPPORT +#if ENABLE_ASH_RANDOM_SUPPORT rseed = rootpid + ((time_t)time((time_t *)0)); #endif init(); @@ -8048,7 +8021,7 @@ cmdloop(int top) inter = 0; if (iflag && top) { inter++; -#ifdef CONFIG_ASH_MAIL +#if ENABLE_ASH_MAIL chkmail(); #endif } @@ -8192,7 +8165,7 @@ exitcmd(int argc, char **argv) /* NOTREACHED */ } -#ifdef CONFIG_ASH_BUILTIN_ECHO +#if ENABLE_ASH_BUILTIN_ECHO static int echocmd(int argc, char **argv) { @@ -8200,7 +8173,7 @@ echocmd(int argc, char **argv) } #endif -#ifdef CONFIG_ASH_BUILTIN_TEST +#if ENABLE_ASH_BUILTIN_TEST static int testcmd(int argc, char **argv) { @@ -8853,7 +8826,7 @@ setarg0: } shellparam.p = xargv; -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS shellparam.optind = 1; shellparam.optoff = -1; #endif @@ -8965,7 +8938,6 @@ setoption(int flag, int val) } - /* * Set the shell parameters. */ @@ -8987,7 +8959,7 @@ setparam(char **argv) shellparam.malloc = 1; shellparam.nparam = nparam; shellparam.p = newparam; -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS shellparam.optind = 1; shellparam.optoff = -1; #endif @@ -9011,7 +8983,6 @@ freeparam(volatile struct shparam *param) } - /* * The shift builtin command. */ @@ -9035,7 +9006,7 @@ shiftcmd(int argc, char **argv) } ap2 = shellparam.p; while ((*ap2++ = *ap1++) != NULL); -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS shellparam.optind = 1; shellparam.optoff = -1; #endif @@ -9044,7 +9015,6 @@ shiftcmd(int argc, char **argv) } - /* * The set command builtin. */ @@ -9065,7 +9035,7 @@ setcmd(int argc, char **argv) } -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS static void getoptsreset(const char *value) { @@ -9074,7 +9044,7 @@ getoptsreset(const char *value) } #endif -#ifdef CONFIG_LOCALE_SUPPORT +#if ENABLE_LOCALE_SUPPORT static void change_lc_all(const char *value) { if (value != 0 && *value != 0) @@ -9089,7 +9059,7 @@ static void change_lc_ctype(const char *value) #endif -#ifdef CONFIG_ASH_RANDOM_SUPPORT +#if ENABLE_ASH_RANDOM_SUPPORT /* Roughly copied from bash.. */ static void change_random(const char *value) { @@ -9110,7 +9080,7 @@ static void change_random(const char *value) #endif -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS static int getopts(char *optstr, char *optvar, char **optfirst, int *param_optind, int *optoff) { @@ -9232,7 +9202,7 @@ getoptscmd(int argc, char **argv) return getopts(argv[1], argv[2], optbase, &shellparam.optind, &shellparam.optoff); } -#endif /* CONFIG_ASH_GETOPTS */ +#endif /* ASH_GETOPTS */ /* * XXX - should get rid of. have all builtins use getopt(3). the @@ -9345,7 +9315,6 @@ fmtstr(char *outbuf, size_t length, const char *fmt, ...) } - /* parser.c */ @@ -9386,8 +9355,6 @@ static void synerror(const char *) ATTRIBUTE_NORETURN; 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.) @@ -9482,7 +9449,6 @@ list(int nlflag) } - static union node * andor(void) { @@ -9510,7 +9476,6 @@ andor(void) } - static union node * pipeline(void) { @@ -9554,7 +9519,6 @@ pipeline(void) } - static union node * command(void) { @@ -9604,7 +9568,8 @@ command(void) n1->type = (lasttoken == TWHILE)? NWHILE : NUNTIL; n1->nbinary.ch1 = list(0); if ((got=readtoken()) != TDO) { -TRACE(("expecting DO got %s %s\n", tokname(got), got == TWORD ? wordtext : "")); + TRACE(("expecting DO got %s %s\n", tokname(got), + got == TWORD ? wordtext : "")); synexpect(TDO); } n1->nbinary.ch2 = list(0); @@ -9942,7 +9907,7 @@ readtoken(void) int alreadyseen = tokpushback; #endif -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS top: #endif @@ -9976,7 +9941,7 @@ top: } if (checkkwd & CHKALIAS) { -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS struct alias *ap; if ((ap = lookupalias(wordtext, 1)) != NULL) { if (*ap->val) { @@ -10050,7 +10015,7 @@ static int xxreadtoken(void) c = pgetc_macro(); if ((c != ' ') && (c != '\t') -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS && (c != PEOA) #endif ) { @@ -10117,7 +10082,7 @@ xxreadtoken(void) c = pgetc_macro(); switch (c) { case ' ': case '\t': -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS case PEOA: #endif continue; @@ -10317,7 +10282,7 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) USTPUTC(c, out); } break; -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT case CLP: /* '(' in arithmetic */ parenlevel++; USTPUTC(c, out); @@ -10358,7 +10323,7 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) default: if (varnest == 0) goto endword; /* exit outer loop */ -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS if (c != PEOA) #endif USTPUTC(c, out); @@ -10368,7 +10333,7 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) } } endword: -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT if (syntax == ARISYNTAX) synerror("Missing '))'"); #endif @@ -10402,7 +10367,6 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) /* end of readtoken routine */ - /* * Check to see whether we are at the end of the here document. When this * is called, c is set to the first character of the next input line. If @@ -10411,7 +10375,7 @@ readtoken1(int firstc, int syntax, char *eofmark, int striptabs) checkend: { if (eofmark) { -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS if (c == PEOA) { c = pgetc2(); } @@ -10526,7 +10490,7 @@ parsesub: { pungetc(); } else if (c == '(') { /* $(command) or $((arith)) */ if (pgetc() == '(') { -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT PARSEARITH(); #else synerror("We unsupport $((arith))"); @@ -10691,7 +10655,7 @@ parsebackq: { /* fall through */ case PEOF: -#ifdef CONFIG_ASH_ALIAS +#if ENABLE_ASH_ALIAS case PEOA: #endif startlinno = plinno; @@ -10768,7 +10732,7 @@ done: goto parsebackq_newreturn; } -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT /* * Parse an arithmetic expansion (indicate start of one and set state) */ @@ -10795,7 +10759,6 @@ parsearith: { } /* end of readtoken */ - /* * Returns true if the text contains nothing to expand (no dollar signs * or backquotes). @@ -10872,7 +10835,7 @@ synerror(const char *msg) * should be added here. */ -#ifdef CONFIG_ASH_EXPAND_PRMT +#if ENABLE_ASH_EXPAND_PRMT static const char * expandstr(const char *ps) { @@ -10896,7 +10859,7 @@ expandstr(const char *ps) static void setprompt(int whichprompt) { const char *prompt; -#ifdef CONFIG_ASH_EXPAND_PRMT +#if ENABLE_ASH_EXPAND_PRMT struct stackmark smark; #endif @@ -10912,12 +10875,12 @@ static void setprompt(int whichprompt) default: /* 0 */ prompt = nullstr; } -#ifdef CONFIG_ASH_EXPAND_PRMT +#if ENABLE_ASH_EXPAND_PRMT setstackmark(&smark); stalloc(stackblocksize()); #endif putprompt(expandstr(prompt)); -#ifdef CONFIG_ASH_EXPAND_PRMT +#if ENABLE_ASH_EXPAND_PRMT popstackmark(&smark); #endif } @@ -11113,7 +11076,6 @@ static void dupredirect(union node *redir, int f) copyfd(f, fd); close(f); } - return; } /* @@ -11386,7 +11348,6 @@ shcmd(union node *cmd, FILE *fp) } - static void sharg(union node *arg, FILE *fp) { @@ -11484,7 +11445,6 @@ indent(int amount, char *pfx, FILE *fp) } - /* * Debugging stuff. */ @@ -11639,7 +11599,6 @@ opentrace(void) #define S_RESET 5 /* temporary - to reset a hard ignored sig */ - /* * The trap builtin. */ @@ -11928,7 +11887,7 @@ static int helpcmd(int argc, char **argv) out1fmt("\n\n"); return EXIT_SUCCESS; } -#endif /* CONFIG_FEATURE_SH_EXTRA_QUIET */ +#endif /* FEATURE_SH_EXTRA_QUIET */ /* * Called to exit the shell. @@ -11976,7 +11935,7 @@ static struct var **findvar(struct var **, const char *); */ -#ifdef CONFIG_ASH_GETOPTS +#if ENABLE_ASH_GETOPTS /* * Safe version of setvar, returns 1 on success 0 on failure. */ @@ -12223,7 +12182,6 @@ showvars(const char *sep_prefix, int on, int off) } - /* * The export and readonly commands. */ @@ -12433,7 +12391,6 @@ out: } - /* * Find the appropriate entry in the hash table from the name. */ @@ -12450,7 +12407,6 @@ hashvar(const char *p) } - /* * Compares two strings up to the first = or '\0'. The first * string must be terminated by '='; the second may be terminated by @@ -12526,7 +12482,7 @@ static int timescmd(int ac, char **av) return 0; } -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT static arith_t dash_arith(const char *s) { @@ -12573,7 +12529,7 @@ letcmd(int argc, char **argv) return !i; } -#endif /* CONFIG_ASH_MATH_SUPPORT */ +#endif /* ASH_MATH_SUPPORT */ /* miscbltin.c */ @@ -12608,13 +12564,13 @@ readcmd(int argc, char **argv) int startword; int status; int i; -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS int nch_flag = 0; int nchars = 0; int silent = 0; struct termios tty, old_tty; #endif -#if defined(CONFIG_ASH_READ_TIMEOUT) +#if ENABLE_ASH_READ_TIMEOUT fd_set set; struct timeval ts; @@ -12623,11 +12579,11 @@ readcmd(int argc, char **argv) rflag = 0; prompt = NULL; -#if defined(CONFIG_ASH_READ_NCHARS) && defined(CONFIG_ASH_READ_TIMEOUT) +#if ENABLE_ASH_READ_NCHARS && ENABLE_ASH_READ_TIMEOUT while ((i = nextopt("p:rt:n:s")) != '\0') -#elif defined(CONFIG_ASH_READ_NCHARS) +#elif ENABLE_ASH_READ_NCHARS while ((i = nextopt("p:rn:s")) != '\0') -#elif defined(CONFIG_ASH_READ_TIMEOUT) +#elif ENABLE_ASH_READ_TIMEOUT while ((i = nextopt("p:rt:")) != '\0') #else while ((i = nextopt("p:r")) != '\0') @@ -12637,7 +12593,7 @@ readcmd(int argc, char **argv) case 'p': prompt = optionarg; break; -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS case 'n': nchars = strtol(optionarg, &p, 10); if (*p) @@ -12648,7 +12604,7 @@ readcmd(int argc, char **argv) silent = 1; break; #endif -#if defined(CONFIG_ASH_READ_TIMEOUT) +#if ENABLE_ASH_READ_TIMEOUT case 't': ts.tv_sec = strtol(optionarg, &p, 10); ts.tv_usec = 0; @@ -12687,7 +12643,7 @@ readcmd(int argc, char **argv) sh_error("arg count"); if ((ifs = bltinlookup("IFS")) == NULL) ifs = defifs; -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS if (nch_flag || silent) { tcgetattr(0, &tty); old_tty = tty; @@ -12702,14 +12658,14 @@ readcmd(int argc, char **argv) tcsetattr(0, TCSANOW, &tty); } #endif -#if defined(CONFIG_ASH_READ_TIMEOUT) +#if ENABLE_ASH_READ_TIMEOUT if (ts.tv_sec || ts.tv_usec) { FD_ZERO (&set); FD_SET (0, &set); i = select(FD_SETSIZE, &set, NULL, NULL, &ts); if (!i) { -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS if (nch_flag) tcsetattr(0, TCSANOW, &old_tty); #endif @@ -12721,7 +12677,7 @@ readcmd(int argc, char **argv) startword = 1; backslash = 0; STARTSTACKSTR(p); -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS while (!nch_flag || nchars--) #else for (;;) @@ -12760,7 +12716,7 @@ put: STPUTC(c, p); } } -#if defined(CONFIG_ASH_READ_NCHARS) +#if ENABLE_ASH_READ_NCHARS if (nch_flag || silent) tcsetattr(0, TCSANOW, &old_tty); #endif @@ -13024,7 +12980,7 @@ ulimitcmd(int argc, char **argv) } -#ifdef CONFIG_ASH_MATH_SUPPORT +#if ENABLE_ASH_MATH_SUPPORT /* Copyright (c) 2001 Aaron Lehmann <aaronl@vitelus.com> @@ -13416,7 +13372,7 @@ static int arith_apply(operator op, v_n_t *numstack, v_n_t **numstackptr) goto err; } /* save to shell variable */ -#ifdef CONFIG_ASH_MATH_SUPPORT_64 +#if ENABLE_ASH_MATH_SUPPORT_64 snprintf(buf, sizeof(buf), "%lld", arith_t_type rez); #else snprintf(buf, sizeof(buf), "%ld", arith_t_type rez); @@ -13560,7 +13516,7 @@ static arith_t arith(const char *expr, int *perrcode) continue; } else if (is_digit(arithval)) { numstackptr->var = NULL; -#ifdef CONFIG_ASH_MATH_SUPPORT_64 +#if ENABLE_ASH_MATH_SUPPORT_64 numstackptr->val = strtoll(expr, (char **) &expr, 0); #else numstackptr->val = strtol(expr, (char **) &expr, 0); @@ -13668,7 +13624,7 @@ static arith_t arith(const char *expr, int *perrcode) ++expr; } /* while */ } -#endif /* CONFIG_ASH_MATH_SUPPORT */ +#endif /* ASH_MATH_SUPPORT */ #if DEBUG |