hush: rework input char buffering to allow more than one-deep peek
This fixes backslash+newline continuation in $VAR\ NAME construct. (ash has a bug there as well). function old new delta file_peek2 - 74 +74 parse_dollar 746 773 +27 expand_vars_to_list 1143 1167 +24 setup_string_in_str 32 46 +14 setup_file_in_str 33 47 +14 file_get 264 278 +14 static_peek2 - 7 +7 file_peek 91 72 -19 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/1 up/down: 174/-19) Total: 155 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
23
shell/ash_test/ash-vars/var_unbackslash.tests
Executable file
23
shell/ash_test/ash-vars/var_unbackslash.tests
Executable file
@@ -0,0 +1,23 @@
|
||||
# Test for correct handling of backslashes
|
||||
a=qwerty
|
||||
|
||||
b=-$a-\t-\\-\"-\`-\--\z-\*-\?-
|
||||
echo b1=$b
|
||||
echo "b1=$b"
|
||||
b="-$a-\t-\\-\"-\`-\--\z-\*-\?-"
|
||||
echo b2=$b
|
||||
echo "b2=$b"
|
||||
b='-$a-\t-\\-\"-\`-\--\z-\*-\?-'
|
||||
echo b3=$b
|
||||
echo "b3=$b"
|
||||
|
||||
c=$b
|
||||
echo "c=$c"
|
||||
c=${b}
|
||||
echo "c=$c"
|
||||
c="$b"
|
||||
echo "c=$c"
|
||||
c="${b}"
|
||||
echo "c=$c"
|
||||
|
||||
echo "Done: $?"
|
||||
Reference in New Issue
Block a user