From: Eric Andersen Date: Tue, 22 Oct 2002 11:58:59 +0000 (-0000) Subject: Apply last_patch51_3 from vodz X-Git-Tag: 0_60_5~13 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1887b0478f2743ce7808e8b37462e18d584611e1;p=oweals%2Fbusybox.git Apply last_patch51_3 from vodz --- diff --git a/shell/ash.c b/shell/ash.c index 216780c9d..f0729ed4d 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -2418,9 +2418,23 @@ static void evalcommand(union node *cmd, int flags) for (argp = cmd->ncmd.assign; argp; argp = argp->narg.next) { expandarg(argp, &varlist, EXP_VARTILDE); } - for (argp = cmd->ncmd.args; argp; argp = argp->narg.next) { + for (argp = cmd->ncmd.args; argp && !arglist.list; argp = argp->narg.next) { expandarg(argp, &arglist, EXP_FULL | EXP_TILDE); } + if (argp) { + struct builtincmd *bcmd; + int pseudovarflag; + + bcmd = find_builtin(arglist.list->text); + pseudovarflag = bcmd && IS_BUILTIN_ASSIGN(bcmd); + for (; argp; argp = argp->narg.next) { + if (pseudovarflag && isassignment(argp->narg.text)) { + expandarg(argp, &arglist, EXP_VARTILDE); + continue; + } + expandarg(argp, &arglist, EXP_FULL | EXP_TILDE); + } + } *arglist.lastp = NULL; *varlist.lastp = NULL; expredir(cmd->ncmd.redirect);