[REBOL] Re: Reading tcp ports in rebol line by line
From: holger:rebol at: 8-Nov-2000 21:41
On Thu, Nov 09, 2000 at 05:55:59PM +1300, Andrew Martin wrote:
> Paul asked:
> > what was the bug in tcp ports?
> The bug in rebol was two things:
> 1 A empty port in line mode doesn't produce none, it just waits for data.
> 2 An empty port always has a rebol newline character in it's buffer.
It's a little different. Whether 'copy returns none or waits for data depends
on whether you used the no-wait refinement for 'open. Without the refinement
'copy blocks, with it 'copy returns none if no data is available. This behavior
applies to all /direct ports, not just ports in line mode.
Regarding the newline character: in current versions there is the problem
that in some circumstances after reading an incoming line that is terminated
by crlf only the cr is read from the input buffer (a side effect of REBOL's
automatic crlf conversion), not the nl, i.e. after the first line 'wait will
return immediately (because of the nl), but 'copy still blocks, because no
full new line is available.
The current workaround is to explicitly tell REBOL what line terminator
you want to use, by using the /with refinement, e.g. /wait "^/". The bug will
be fixed in one of the next experimentals.