
/*
 *  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);
}

