hush: fix eval 'echo ok\'

function                                             old     new   delta
parse_stream                                        2762    2753      -9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-04-10 14:40:23 +02:00
parent 92a930b4e8
commit bcf56114fa
3 changed files with 11 additions and 5 deletions

View File

@ -5379,15 +5379,19 @@ static struct pipe *parse_stream(char **pstring,
continue; /* get next char */ continue; /* get next char */
case '\\': case '\\':
/*nommu_addchr(&ctx.as_string, '\\'); - already done */ /*nommu_addchr(&ctx.as_string, '\\'); - already done */
o_addchr(&ctx.word, '\\');
ch = i_getch(input); ch = i_getch(input);
if (ch == EOF) { if (ch == EOF) {
//TODO: in ". FILE" containing "cmd\" (no newline) bash ignores last "\" /* Ignore this '\'. Testcase: eval 'echo Ok\' */
syntax_error("\\<eof>"); #if !BB_MMU
xfunc_die(); /* Remove trailing '\' from ctx.as_string */
ctx.as_string.data[--ctx.as_string.length] = '\0';
#endif
continue; /* get next char */
} }
o_addchr(&ctx.word, '\\');
/* Example: echo Hello \2>file /* Example: echo Hello \2>file
* we need to know that word 2 is quoted */ * we need to know that word 2 is quoted
*/
ctx.word.has_quoted_part = 1; ctx.word.has_quoted_part = 1;
nommu_addchr(&ctx.as_string, ch); nommu_addchr(&ctx.as_string, ch);
o_addchr(&ctx.word, ch); o_addchr(&ctx.word, ch);

View File

@ -0,0 +1 @@
ok

View File

@ -0,0 +1 @@
eval 'echo ok\'