220be537a0
Part of upstream commit: Date: Thu Mar 8 08:37:11 2018 +0100 Author: Harald van Dijk <harald@gigawatt.nl> parser: use pgetc_eatbnl() in more places dash has a pgetc_eatbnl function in parser.c which skips any backslash-newline combinations. It's not used everywhere it could be. There is also some duplicated backslash-newline handling elsewhere in parser.c. Replace most of the calls to pgetc() with calls to pgetc_eatbnl() and remove the duplicated backslash-newline handling. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Not adding "readtoken1(pgetc_eatbnl(), DQSYNTAX..." changes, since readtoken1() handles the "starts with backslash + newline" case itself. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
71 lines
1.4 KiB
Plaintext
Executable File
71 lines
1.4 KiB
Plaintext
Executable File
# Test for correct handling of backslashes.
|
|
# Note that some lines in each heredoc start with a tab.
|
|
|
|
a=qwerty
|
|
|
|
echo Quoted heredoc:
|
|
cat <<"EOF1"
|
|
a\
|
|
b
|
|
a\\
|
|
b
|
|
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
|
|
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
|
|
c\
|
|
EOF1
|
|
echo
|
|
|
|
echo Unquoted heredoc:
|
|
cat <<EOF2
|
|
a\
|
|
b
|
|
a\\
|
|
b
|
|
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
|
|
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
|
|
c\
|
|
EOF2
|
|
EOF2
|
|
echo
|
|
|
|
echo Quoted -heredoc:
|
|
cat <<-"EOF3"
|
|
a\
|
|
b
|
|
a\\
|
|
b
|
|
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
|
|
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
|
|
c\
|
|
EOF3
|
|
# In -heredoc case the marker is detected even if it is indented.
|
|
echo
|
|
|
|
echo Unquoted -heredoc:
|
|
cat <<-EOF4
|
|
a\
|
|
b
|
|
a\\
|
|
b
|
|
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
|
|
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
|
|
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
|
|
c\
|
|
EOF4
|
|
EOF4
|
|
# The marker is not detected if preceding line ends in backslash.
|
|
# TODO: marker should be detected even if it is split by line continuation:
|
|
# EOF\
|
|
# 4
|
|
# but currently hush doesn't do it. (Tab before "4" is not allowed, though.)
|
|
echo
|
|
|
|
echo "Done: $?"
|