diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/cli.c | 9 | ||||
-rw-r--r-- | common/cli_hush.c | 3 |
2 files changed, 8 insertions, 4 deletions
diff --git a/common/cli.c b/common/cli.c index 272b028..075ae9d 100644 --- a/common/cli.c +++ b/common/cli.c @@ -36,8 +36,11 @@ int run_command(const char *cmd, int flag) return 0; #else - return parse_string_outer(cmd, - FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP); + int hush_flags = FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP; + + if (flag & CMD_FLAG_ENV) + hush_flags |= FLAG_CONT_ON_NEWLINE; + return parse_string_outer(cmd, hush_flags); #endif } @@ -125,7 +128,7 @@ int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 1; } - if (run_command(arg, flag) != 0) + if (run_command(arg, flag | CMD_FLAG_ENV) != 0) return 1; } return 0; diff --git a/common/cli_hush.c b/common/cli_hush.c index 38da5a0..2b654b7 100644 --- a/common/cli_hush.c +++ b/common/cli_hush.c @@ -3170,7 +3170,8 @@ static int parse_stream_outer(struct in_str *inp, int flag) update_ifs_map(); if (!(flag & FLAG_PARSE_SEMICOLON) || (flag & FLAG_REPARSING)) mapset((uchar *)";$&|", 0); inp->promptmode=1; - rcode = parse_stream(&temp, &ctx, inp, '\n'); + rcode = parse_stream(&temp, &ctx, inp, + flag & FLAG_CONT_ON_NEWLINE ? -1 : '\n'); #ifdef __U_BOOT__ if (rcode == 1) flag_repeat = 0; #endif |