hush: fix comment parsing in cmd, closes 10421

function                                             old     new   delta
parse_stream                                        2692    2690      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2017-10-22 15:55:48 +02:00
parent 045327a418
commit 25f3b737dc
5 changed files with 47 additions and 4 deletions

View File

@@ -5140,14 +5140,23 @@ static struct pipe *parse_stream(char **pstring,
case '#':
if (dest.length == 0 && !dest.has_quoted_part) {
/* skip "#comment" */
/* note: we do not add it to &ctx.as_string */
/* TODO: in bash:
* comment inside $() goes to the next \n, even inside quoted string (!):
* cmd "$(cmd2 #comment)" - syntax error
* cmd "`cmd2 #comment`" - ok
* We accept both (comment ends where command subst ends, in both cases).
*/
while (1) {
ch = i_peek(input);
if (ch == EOF || ch == '\n')
if (ch == '\n') {
nommu_addchr(&ctx.as_string, '\n');
break;
}
ch = i_getch(input);
if (ch == EOF)
break;
i_getch(input);
/* note: we do not add it to &ctx.as_string */
}
nommu_addchr(&ctx.as_string, '\n');
continue; /* back to top of while (1) */
}
break;