Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| /* include readn */ | |
| #include "unp.h" | |
| ssize_t /* Read "n" bytes from a descriptor. */ | |
| readn(int fd, void *vptr, size_t n) | |
| { | |
| size_t nleft; | |
| ssize_t nread; | |
| char *ptr; | |
| ptr = vptr; | |
| nleft = n; | |
| while (nleft > 0) { | |
| if ( (nread = read(fd, ptr, nleft)) < 0) { | |
| if (errno == EINTR) | |
| nread = 0; /* and call read() again */ | |
| else | |
| return(-1); | |
| } else if (nread == 0) | |
| break; /* EOF */ | |
| nleft -= nread; | |
| ptr += nread; | |
| } | |
| return(n - nleft); /* return >= 0 */ | |
| } | |
| /* end readn */ | |
| ssize_t | |
| Readn(int fd, void *ptr, size_t nbytes) | |
| { | |
| ssize_t n; | |
| if ( (n = readn(fd, ptr, nbytes)) < 0) | |
| err_sys("readn error"); | |
| return(n); | |
| } |