diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-12 10:12:18 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-02-12 10:12:18 +0000 |
commit | fee2d0c2567f9fad6a0a278b4598053a41180012 (patch) | |
tree | 435bf9472feea25781b11930d2a328b2debf951d | |
parent | 7e497527ea2edf0d75c9de243ba8202eaf87ee9d (diff) | |
download | busybox-fee2d0c2567f9fad6a0a278b4598053a41180012.tar.gz |
msh: stop trying to parse variables in "msh SCRIPT VAR=val param".
They should be passed as ordinary parameters.
-rw-r--r-- | shell/msh.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/shell/msh.c b/shell/msh.c index ee54ef2d4..65556043d 100644 --- a/shell/msh.c +++ b/shell/msh.c @@ -5337,19 +5337,22 @@ int msh_main(int argc, char **argv) if (signal(SIGINT, SIG_IGN) != SIG_IGN) signal(SIGINT, onintr); + +/* Handle "msh SCRIPT VAR=val params..." */ +/* Disabled: bash does not do it! */ +#if 0 + argv++; + /* skip leading args of the form VAR=val */ + while (*argv && assign(*argv, !COPYV)) { + argc--; + argv++; + } + argv--; +#endif dolv = argv; dolc = argc; dolv[0] = name; - if (dolc > 1) { - for (ap = ++argv; --argc > 0;) { - *ap = *argv++; - if (assign(*ap, !COPYV)) { - dolc--; /* keyword */ - } else { - ap++; - } - } - } + setval(lookup("#"), putn((--dolc < 0) ? (dolc = 0) : dolc)); DBGPRINTF(("MSH_MAIN: begin FOR loop, interactive %d, global_env.iop %p, iostack %p\n", interactive, global_env.iop, iostack)); |