hush: fix escaping of \[*?; add testsuites for these and for globbing

This commit is contained in:
Denis Vlasenko 2008-06-10 20:13:40 +00:00
parent 2e76c3f901
commit 43360e5178
7 changed files with 21 additions and 2 deletions

View File

@ -3638,7 +3638,6 @@ static int parse_stream(o_string *dest, struct p_context *ctx,
debug_printf_parse("parse_stream return 1: \\<eof>\n"); debug_printf_parse("parse_stream return 1: \\<eof>\n");
return 1; return 1;
} }
o_addqchr(dest, '\\', dest->o_quote);
o_addqchr(dest, i_getch(input), dest->o_quote); o_addqchr(dest, i_getch(input), dest->o_quote);
break; break;
case '$': case '$':
@ -3653,7 +3652,7 @@ static int parse_stream(o_string *dest, struct p_context *ctx,
ch = i_getch(input); ch = i_getch(input);
if (ch == EOF || ch == '\'') if (ch == EOF || ch == '\'')
break; break;
o_addchr(dest, ch); o_addqchr(dest, ch, 1);
} }
if (ch == EOF) { if (ch == EOF) {
syntax("unterminated '"); syntax("unterminated '");

View File

@ -0,0 +1,2 @@
glob1.tests
glob1.tests

View File

@ -0,0 +1,2 @@
echo *glob1?t[e]sts*
echo "glob1"?'t'[e]s*

View File

@ -0,0 +1,4 @@
\
a\b
\\
c\\d

View File

@ -0,0 +1,4 @@
echo "\\"
echo a"\\"b
echo '\\'
echo c'\\'d

View File

@ -0,0 +1,4 @@
*?[a]*
a*?[a]*b
*?[a]*
c*?[a]*d

View File

@ -0,0 +1,4 @@
echo "*?[a]*"
echo a"*?[a]*"b
echo '*?[a]*'
echo c'*?[a]*'d