Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: tcp_read -d and newlines

On Sun, 5 Apr 2009 23:10:36 +0000
Clint Adams <clint@xxxxxxx> wrote:
> When tcp_read -d'ing a socket that doesn't end in a newline, the last
> "line" gets discarded,  I think, because read returns an error on that
> line.

I've had problems with this, too, in the past, although I think my problem
was chunks of input (not necessarily ending in EOF) that didn't have
newlines.  I could find an easy way of handling this.  It sounds like your
problem is when there is an EOF.

> What can be done? 

One possible but slightly clumsy mechanism is to introduce a flag, say -D,
that allows an incomplete line but returns something different if there's
no delimiter (e.g. it sets REPLY2 to the delimiter actually read which may
be empty, and I suppose we could allow it to be the EOF character too).
It's clumsy because if you want to fix my case you have to poll for input,
and we've found in the past that doing this correctly on terminals can be a
black art (terminals aren't the problem here but it's up to us to disguise
the type of input as much as possible since it's not fair to tell shell
users it's all termios' fault).  If we plan on getting an EOF it's
relatively straightforward.

Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK                          Tel: +44 (0)1223 692070

Messages sorted by: Reverse Date, Date, Thread, Author