/* ISC license. */ #include #include #include ssize_t readnclose (int fd, char *s, size_t n) { int e = errno ; size_t r ; errno = 0 ; r = allread(fd, s, n) ; fd_close(fd) ; if (errno) return -1 ; errno = e ; return r ; }