1*219b2ee8SDavid du Colombier #include <u.h> 2*219b2ee8SDavid du Colombier #include <libc.h> 3*219b2ee8SDavid du Colombier #include <auth.h> 4*219b2ee8SDavid du Colombier #include "authsrv.h" 5*219b2ee8SDavid du Colombier 6*219b2ee8SDavid du Colombier /* 7*219b2ee8SDavid du Colombier * read exactly len bytes 8*219b2ee8SDavid du Colombier */ 9*219b2ee8SDavid du Colombier int 10*219b2ee8SDavid du Colombier readn(int fd, char *buf, int len) 11*219b2ee8SDavid du Colombier { 12*219b2ee8SDavid du Colombier int m, n; 13*219b2ee8SDavid du Colombier 14*219b2ee8SDavid du Colombier for(n = 0; n < len; n += m){ 15*219b2ee8SDavid du Colombier m = read(fd, buf+n, len-n); 16*219b2ee8SDavid du Colombier if(m <= 0) 17*219b2ee8SDavid du Colombier return -1; 18*219b2ee8SDavid du Colombier } 19*219b2ee8SDavid du Colombier return n; 20*219b2ee8SDavid du Colombier } 21