readn.c 234 B

12345678910111213141516171819202122
  1. #include <u.h>
  2. #include <libc.h>
  3. long
  4. readn(int f, void *av, long n)
  5. {
  6. char *a;
  7. long m, t;
  8. a = av;
  9. t = 0;
  10. while(t < n){
  11. m = read(f, a+t, n-t);
  12. if(m <= 0){
  13. if(t == 0)
  14. return m;
  15. break;
  16. }
  17. t += m;
  18. }
  19. return t;
  20. }