ref: d25b95f4f26d57bf06a2d0f00a0872f715919c21
dir: /sys/src/cmd/unix/drawterm/libc/readn.c/
#include <u.h>
#include <libc.h>
long
readn(int f, void *av, long n)
{
char *a;
long m, t;
a = av;
t = 0;
while(t < n){
m = read(f, a+t, n-t);
if(m <= 0){
if(t == 0)
return m;
break;
}
t += m;
}
return t;
}