hush: fix raw ^C handlisg in single-quoted strings
function old new delta parse_stream 2719 2754 +35 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
6606c519ef
commit
9809a82b59
@ -1,2 +1,3 @@
|
||||
|
||||
b#c
|
||||
Done:0
|
||||
|
@ -1,2 +1,3 @@
|
||||
echo
|
||||
echo 'b#c'
|
||||
echo Done:$?
|
||||
|
@ -5,4 +5,5 @@ b"c
|
||||
b'c
|
||||
b$c
|
||||
b`true`c
|
||||
b#c
|
||||
Zero:0
|
||||
|
@ -1,9 +1,5 @@
|
||||
# UNFIXED BUG.
|
||||
# commented-out words contain ^C character.
|
||||
# It's a SPECIAL_VAR_SYMBOL, for now hush does not escape it.
|
||||
# When it is fixed, update this test.
|
||||
|
||||
for a in 'a' 'b\c' 'b\\c' 'b"c' "b'c" 'b$c' 'b`true`c' ### 'b#c'
|
||||
# last word contains ^C character.
|
||||
for a in 'a' 'b\c' 'b\\c' 'b"c' "b'c" 'b$c' 'b`true`c' 'b#c'
|
||||
do
|
||||
echo $a
|
||||
done
|
||||
|
@ -5225,6 +5225,11 @@ static struct pipe *parse_stream(char **pstring,
|
||||
nommu_addchr(&ctx.as_string, ch);
|
||||
if (ch == '\'')
|
||||
break;
|
||||
if (ch == SPECIAL_VAR_SYMBOL) {
|
||||
/* Convert raw ^C to corresponding special variable reference */
|
||||
o_addchr(&dest, SPECIAL_VAR_SYMBOL);
|
||||
o_addchr(&dest, SPECIAL_VAR_QUOTED_SVS);
|
||||
}
|
||||
o_addqchr(&dest, ch);
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
|
||||
b#c
|
||||
Done:0
|
||||
|
@ -1,2 +1,3 @@
|
||||
echo
|
||||
echo 'b#c'
|
||||
echo Done:$?
|
||||
|
@ -5,4 +5,5 @@ b"c
|
||||
b'c
|
||||
b$c
|
||||
b`true`c
|
||||
b#c
|
||||
Zero:0
|
||||
|
@ -1,9 +1,5 @@
|
||||
# UNFIXED BUG.
|
||||
# commented-out words contain ^C character.
|
||||
# It's a SPECIAL_VAR_SYMBOL, for now hush does not escape it.
|
||||
# When it is fixed, update this test.
|
||||
|
||||
for a in 'a' 'b\c' 'b\\c' 'b"c' "b'c" 'b$c' 'b`true`c' ### 'b#c'
|
||||
# last word contains ^C character.
|
||||
for a in 'a' 'b\c' 'b\\c' 'b"c' "b'c" 'b$c' 'b`true`c' 'b#c'
|
||||
do
|
||||
echo $a
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user