xref: /plan9/sys/src/cmd/auth/lib/readn.c (revision 5979f96214a33481f1724725761f2ef3585d2237)
1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
3*5979f962SDavid du Colombier #include <bio.h>
49a747e4fSDavid du Colombier #include "authcmdlib.h"
5219b2ee8SDavid du Colombier 
6219b2ee8SDavid du Colombier /*
7219b2ee8SDavid du Colombier  *  read exactly len bytes
8219b2ee8SDavid du Colombier  */
9219b2ee8SDavid du Colombier int
readn(int fd,char * buf,int len)10219b2ee8SDavid du Colombier readn(int fd, char *buf, int len)
11219b2ee8SDavid du Colombier {
12219b2ee8SDavid du Colombier 	int m, n;
13219b2ee8SDavid du Colombier 
14219b2ee8SDavid du Colombier 	for(n = 0; n < len; n += m){
15219b2ee8SDavid du Colombier 		m = read(fd, buf+n, len-n);
16219b2ee8SDavid du Colombier 		if(m <= 0)
17219b2ee8SDavid du Colombier 			return -1;
18219b2ee8SDavid du Colombier 	}
19219b2ee8SDavid du Colombier 	return n;
20219b2ee8SDavid du Colombier }
21