From 16a0c74f638d2d730525856d391078f2ea662aeb Mon Sep 17 00:00:00 2001
From: Denis Vlasenko <vda.linux@googlemail.com>
Date: Sun, 5 Apr 2009 01:46:59 +0000
Subject: hush: fix hush-misc/break5.tests NOMMU failure

function                                             old     new   delta
hush_main                                           1118    1144     +26
re_execute_shell                                     188     204     +16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 42/0)               Total: 42 bytes
---
 shell/hush.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

(limited to 'shell')

diff --git a/shell/hush.c b/shell/hush.c
index 13e962383..3388ad7f9 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -2345,8 +2345,8 @@ static void re_execute_shell(const char *s)
 	char **argv, **pp;
 	unsigned cnt;
 
-	/* hush -$<pid> -?<exitcode> ... -c <cmd> NULL */
-	cnt = 6;
+	/* hush -$<pid> -?<exitcode> -D<depth> ... -c <cmd> NULL */
+	cnt = 7;
 	for (cur = G.top_var; cur; cur = cur->next) {
 		if (!cur->flg_export || cur->flg_read_only)
 			cnt += 2;
@@ -2356,6 +2356,7 @@ static void re_execute_shell(const char *s)
 	*pp++ = (char *) applet_name;
 	*pp++ = xasprintf("-$%u", G.root_pid);
 	*pp++ = xasprintf("-?%u", G.last_return_code);
+	*pp++ = xasprintf("-D%u", G.depth_of_loop);
 	for (cur = G.top_var; cur; cur = cur->next) {
 		if (cur->varstr == hush_version_str)
 			continue;
@@ -5009,7 +5010,7 @@ int hush_main(int argc, char **argv)
 	while (1) {
 		opt = getopt(argc, argv, "c:xins"
 #if !BB_MMU
-				"$:?:R:V:"
+				"$:?:D:R:V:"
 #endif
 		);
 		if (opt <= 0)
@@ -5041,6 +5042,9 @@ int hush_main(int argc, char **argv)
 		case '?':
 			G.last_return_code = xatoi_u(optarg);
 			break;
+		case 'D':
+			G.depth_of_loop = xatoi_u(optarg);
+			break;
 		case 'R':
 		case 'V':
 			set_local_var(xstrdup(optarg), 0, opt == 'R');
-- 
cgit v1.2.3