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