Example #1
0
uchar*
read9ppkt(Ioproc *io, int fd)
{
	uchar buf[4], *pkt;
	int n, nn;

	n = ioreadn(io, fd, buf, 4);
	if(n != 4)
		return nil;
	n = GBIT32(buf);
	if(n > MAXMSGSIZE)
		return nil;
	pkt = emalloc(n);
	PBIT32(pkt, n);
	nn = ioreadn(io, fd, pkt+4, n-4);
	if(nn != n-4){
		free(pkt);
		return nil;
	}
/* would do this if we ever got one of these, but we only generate them
	if(pkt[4] == Ropenfd){
		newfd = iorecvfd(io, fd);
		PBIT32(pkt+n-4, newfd);
	}
*/
	return pkt;
}
Example #2
0
File: buf.c Project: aahud/harvey
int
readibuf(Ibuf *b, char *buf, int len)
{
	int n;

	n = b->wp - b->rp;
	if(n > 0){
		if(n > len)
			n = len;
		memmove(buf, b->rp, n);
		b->rp += n;
		return n;
	}
	return ioreadn(b->io, b->fd, buf, len);
}