xref: /plan9-contrib/sys/src/cmd/auth/lib/readn.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1*219b2ee8SDavid du Colombier #include <u.h>
2*219b2ee8SDavid du Colombier #include <libc.h>
3*219b2ee8SDavid du Colombier #include <auth.h>
4*219b2ee8SDavid du Colombier #include "authsrv.h"
5*219b2ee8SDavid du Colombier 
6*219b2ee8SDavid du Colombier /*
7*219b2ee8SDavid du Colombier  *  read exactly len bytes
8*219b2ee8SDavid du Colombier  */
9*219b2ee8SDavid du Colombier int
10*219b2ee8SDavid du Colombier readn(int fd, char *buf, int len)
11*219b2ee8SDavid du Colombier {
12*219b2ee8SDavid du Colombier 	int m, n;
13*219b2ee8SDavid du Colombier 
14*219b2ee8SDavid du Colombier 	for(n = 0; n < len; n += m){
15*219b2ee8SDavid du Colombier 		m = read(fd, buf+n, len-n);
16*219b2ee8SDavid du Colombier 		if(m <= 0)
17*219b2ee8SDavid du Colombier 			return -1;
18*219b2ee8SDavid du Colombier 	}
19*219b2ee8SDavid du Colombier 	return n;
20*219b2ee8SDavid du Colombier }
21