ref: f2a9244e2d5cf7011c07e5a3ea34c1fa032cae5c
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; }