diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-07 15:16:05 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-07 15:16:05 +0100 |
commit | 642e71a789156a96bcb18e6c5a0f52416c49d3b5 (patch) | |
tree | c04b16ed5297d297298ec19cb1d48b4d60c4775f /shell | |
parent | f42c7b8fc161f5b3eb4e9c13f392daf7a11760c8 (diff) | |
download | busybox-642e71a789156a96bcb18e6c5a0f52416c49d3b5.tar.gz |
hush: fix wrong prompt problem on empty interactive commants
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/hush.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/shell/hush.c b/shell/hush.c index a771e9cd9..24b9e6efe 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -4140,7 +4140,16 @@ static struct pipe *parse_stream(char **pstring, if (IS_NULL_CMD(ctx.command) && dest.length == 0 && !dest.has_quoted_part ) { - continue; + /* This newline can be ignored. But... + * without the below check, interactive shell + * will ignore even lines with bare <newline>, + * and show the continuation prompt: + * ps1_prompt$ <enter> + * ps2> _ <=== wrong prompt, should be ps1 + */ + struct pipe *pi = ctx.list_head; + if (pi->num_cmds != 0) + continue; } /* Treat newline as a command separator. */ done_pipe(&ctx, PIPE_SEQ); |