xref: /plan9/sys/src/cmd/unix/u9fs/readn.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <plan9.h>
2*9a747e4fSDavid du Colombier 
3*9a747e4fSDavid du Colombier long
readn(int f,void * av,long n)4*9a747e4fSDavid du Colombier readn(int f, void *av, long n)
5*9a747e4fSDavid du Colombier {
6*9a747e4fSDavid du Colombier 	char *a;
7*9a747e4fSDavid du Colombier 	long m, t;
8*9a747e4fSDavid du Colombier 
9*9a747e4fSDavid du Colombier 	a = av;
10*9a747e4fSDavid du Colombier 	t = 0;
11*9a747e4fSDavid du Colombier 	while(t < n){
12*9a747e4fSDavid du Colombier 		m = read(f, a+t, n-t);
13*9a747e4fSDavid du Colombier 		if(m <= 0){
14*9a747e4fSDavid du Colombier 			if(t == 0)
15*9a747e4fSDavid du Colombier 				return m;
16*9a747e4fSDavid du Colombier 			break;
17*9a747e4fSDavid du Colombier 		}
18*9a747e4fSDavid du Colombier 		t += m;
19*9a747e4fSDavid du Colombier 	}
20*9a747e4fSDavid du Colombier 	return t;
21*9a747e4fSDavid du Colombier }
22