[git commit master] hush: two NOMMU fixes for bugs 877 and 883

Denys Vlasenko vda.linux at googlemail.com
Tue Jan 12 12:45:45 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=b70cef71ebf1e71d147e1dee57134b1ad1da6314
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c                           |   15 ++++++++++++---
 shell/hush_test/hush-misc/nommu2.right |    5 +++++
 shell/hush_test/hush-misc/nommu2.tests |    5 +++++
 3 files changed, 22 insertions(+), 3 deletions(-)
 create mode 100644 shell/hush_test/hush-misc/nommu2.right
 create mode 100755 shell/hush_test/hush-misc/nommu2.tests

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
-- 
1.6.3.3



More information about the busybox-cvs mailing list