aboutsummaryrefslogtreecommitdiff
path: root/shell/hush.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-04-05 01:46:59 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-04-05 01:46:59 +0000
commit16a0c74f638d2d730525856d391078f2ea662aeb (patch)
tree7a2bec11e284438bb0e73d939a1909dc5a5d2a90 /shell/hush.c
parent0bb4a23506c07c2b696a91661d38b86860e2e7be (diff)
downloadbusybox-16a0c74f638d2d730525856d391078f2ea662aeb.tar.gz
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
Diffstat (limited to 'shell/hush.c')
-rw-r--r--shell/hush.c10
1 files changed, 7 insertions, 3 deletions
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');