/* * DRead.C */ #include "lib.h" long DRead(_chan, _buf, bytes) void *_buf; void *_chan; long bytes; { CHANN *chan = (CHANN *)_chan; char *buf = (char *)_buf; long len = 0; long n = -1; if (chan->eof) return(-1); while (bytes) { if (n == 0) WaitPort(&chan->port); n = DNRead(chan, buf, bytes); if (n < 0) break; len += n; buf += n; bytes -= n; if (chan->eof) break; } return(len); }