diff options
Diffstat (limited to 'shell/hush.c')
-rw-r--r-- | shell/hush.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/shell/hush.c b/shell/hush.c index d27550ba0..708555ac4 100644 --- a/shell/hush.c +++ b/shell/hush.c | |||
@@ -5140,14 +5140,23 @@ static struct pipe *parse_stream(char **pstring, | |||
5140 | case '#': | 5140 | case '#': |
5141 | if (dest.length == 0 && !dest.has_quoted_part) { | 5141 | if (dest.length == 0 && !dest.has_quoted_part) { |
5142 | /* skip "#comment" */ | 5142 | /* skip "#comment" */ |
5143 | /* note: we do not add it to &ctx.as_string */ | ||
5144 | /* TODO: in bash: | ||
5145 | * comment inside $() goes to the next \n, even inside quoted string (!): | ||
5146 | * cmd "$(cmd2 #comment)" - syntax error | ||
5147 | * cmd "`cmd2 #comment`" - ok | ||
5148 | * We accept both (comment ends where command subst ends, in both cases). | ||
5149 | */ | ||
5143 | while (1) { | 5150 | while (1) { |
5144 | ch = i_peek(input); | 5151 | ch = i_peek(input); |
5145 | if (ch == EOF || ch == '\n') | 5152 | if (ch == '\n') { |
5153 | nommu_addchr(&ctx.as_string, '\n'); | ||
5154 | break; | ||
5155 | } | ||
5156 | ch = i_getch(input); | ||
5157 | if (ch == EOF) | ||
5146 | break; | 5158 | break; |
5147 | i_getch(input); | ||
5148 | /* note: we do not add it to &ctx.as_string */ | ||
5149 | } | 5159 | } |
5150 | nommu_addchr(&ctx.as_string, '\n'); | ||
5151 | continue; /* back to top of while (1) */ | 5160 | continue; /* back to top of while (1) */ |
5152 | } | 5161 | } |
5153 | break; | 5162 | break; |