[comp.lang.icon] a reads

yost@esquire.UUCP (David A. Yost) (02/15/90)

#!/bin/sh

# Demonstrate Icon reads() bug on Sun4
# Reading more characters than available on a pipe can cause trouble
# Don't know if it is a system bug or an Icon bug
# May also be a problem if reading from a device.
# Works OK on the Pyramid
# Icon version 7.5
# Moral of the story, reads(,4096) at a time, max

# 2/14/90 Dave Yost, DP&W <yost@DPW.COM>

pipebufsize=4096
just_big_enough_for_trouble1=`expr $pipebufsize + 1`
just_big_enough_for_trouble2=`expr $pipebufsize + 1`

tmp=xxx
bigfile=/etc/termcap

dd ibs=$just_big_enough_for_trouble1 count=1 < $bigfile > $tmp

cat << END > pipebug.icn

procedure
main (args)
    while writes(reads(&input, $just_big_enough_for_trouble2))
    return
end

END

icont pipebug.icn

echo ">> Both of these commands should succeed, but for the bug
"
echo ">> ./pipebug < $tmp | cmp - $tmp"
	 ./pipebug < $tmp | cmp - $tmp

echo ">> cat $tmp | ./pipebug | cmp - $tmp"
	 cat $tmp | ./pipebug | cmp - $tmp

rm -f pipebug.icn $tmp