diff options
author | Denys Vlasenko | 2010-01-12 13:45:45 +0100 |
---|---|---|
committer | Denys Vlasenko | 2010-01-12 13:45:45 +0100 |
commit | b70cef71ebf1e71d147e1dee57134b1ad1da6314 (patch) | |
tree | e05f08a7b4c7d4c07a9becc48fc2d881ff82bfd1 /shell | |
parent | f2c8aa6676ebedc34b2cd5089ce6f13c16db1277 (diff) | |
download | busybox-b70cef71ebf1e71d147e1dee57134b1ad1da6314.zip busybox-b70cef71ebf1e71d147e1dee57134b1ad1da6314.tar.gz |
hush: two NOMMU fixes for bugs 877 and 883
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 15 | ||||
-rw-r--r-- | shell/hush_test/hush-misc/nommu2.right | 5 | ||||
-rwxr-xr-x | shell/hush_test/hush-misc/nommu2.tests | 5 |
3 files changed, 22 insertions, 3 deletions
diff --git a/shell/hush.c b/shell/hush.c index d02e68d..7d851ed 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -4406,9 +4406,15 @@ static void debug_print_tree(struct pipe *pi, int lvl) lvl*2, "", prn, command->assignment_cnt); if (command->group) { - fprintf(stderr, " group %s: (argv=%p)\n", + fprintf(stderr, " group %s: (argv=%p)%s%s\n", CMDTYPE[command->cmd_type], - argv); + argv +#if !BB_MMU + , " group_as_string:", command->group_as_string +#else + , "", "" +#endif + ); debug_print_tree(command->group, lvl+1); prn++; continue; @@ -5986,7 +5992,7 @@ static int handle_dollar(o_string *as_string, # if !BB_MMU if (as_string) { o_addstr(as_string, dest->data + pos); - o_addchr(as_string, '`'); + o_addchr(as_string, ')'); } # endif o_addchr(dest, SPECIAL_VAR_SYMBOL); @@ -6535,6 +6541,9 @@ static struct pipe *parse_stream(char **pstring, * with redirect_opt_num(), but bash doesn't do it. * "echo foo 2| cat" yields "foo 2". */ done_command(&ctx); +#if !BB_MMU + o_reset_to_empty_unquoted(&ctx.as_string); +#endif } goto new_cmd; case '(': diff --git a/shell/hush_test/hush-misc/nommu2.right b/shell/hush_test/hush-misc/nommu2.right new file mode 100644 index 0000000..fb8ba8b --- /dev/null +++ b/shell/hush_test/hush-misc/nommu2.right @@ -0,0 +1,5 @@ +Ok +Ok +Ok +Ok +Done diff --git a/shell/hush_test/hush-misc/nommu2.tests b/shell/hush_test/hush-misc/nommu2.tests new file mode 100755 index 0000000..61ed5ce --- /dev/null +++ b/shell/hush_test/hush-misc/nommu2.tests @@ -0,0 +1,5 @@ +echo Not shown | if true; then echo $(echo Ok); fi +echo Not shown | if true; then echo `echo Ok`; fi +echo Not shown | ( if true; then echo $(echo Ok); fi ) +echo Not shown | ( if true; then echo `echo Ok`; fi ) +echo Done |