# check order and content of multiple here docs

cat << EOF1 << EOF2
hi
EOF1
there
EOF2

while read line1; do
	read line2 <&3
	echo $line1 - $line2
done <<EOF1 3<<EOF2
one
two
three
EOF1
alpha
beta
gamma
EOF2


# check quoted here-doc is protected

a=foo
cat << 'EOF'
hi\
there$a
stuff
EOF

# check that quoted here-documents don't have \newline processing done

cat << 'EOF'
hi\
there
EO\
F
EOF
true

# check that \newline is removed at start of here-doc
cat << EO\
F
hi
EOF

# check that \newline removal works for here-doc delimiter
cat << EOF
hi
EO\
F

# check operation of tab removal in here documents
cat <<- EOF
	tab 1
	tab 2
	tab 3
	EOF

# check appending of text to file from here document
rm -f /tmp/bash-zzz
cat > /tmp/bash-zzz << EOF
abc
EOF
cat >> /tmp/bash-zzz << EOF
def ghi
jkl mno
EOF
cat /tmp/bash-zzz
rm -f /tmp/bash-zzz

# make sure command printing puts the here-document as the last redirection
# on the line, and the function export code preserves syntactic correctness
fff()
{
  ed /tmp/foo <<ENDOFINPUT >/dev/null
/^name/d
w
q
ENDOFINPUT
aa=1
}

type fff
#ash# export -f fff
#ash# ${THIS_SH} -c 'type fff'

#hush# bash warns: "here-document at line N delimited by end-of-file",
#hush# ash allows it,
#hush# hush errors out for now:
#hush# # check that end of file delimits a here-document
#hush# # THIS MUST BE LAST!
#hush#
#hush# cat << EOF
#hush# hi
#hush# there
