summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenis Vlasenko2008-02-12 10:12:18 +0000
committerDenis Vlasenko2008-02-12 10:12:18 +0000
commitfee2d0c2567f9fad6a0a278b4598053a41180012 (patch)
tree435bf9472feea25781b11930d2a328b2debf951d /shell
parent7e497527ea2edf0d75c9de243ba8202eaf87ee9d (diff)
downloadbusybox-fee2d0c2567f9fad6a0a278b4598053a41180012.zip
busybox-fee2d0c2567f9fad6a0a278b4598053a41180012.tar.gz
msh: stop trying to parse variables in "msh SCRIPT VAR=val param".
They should be passed as ordinary parameters.
Diffstat (limited to 'shell')
-rw-r--r--shell/msh.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/shell/msh.c b/shell/msh.c
index ee54ef2..6555604 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));