X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=fd.c;h=23b89b5d35a19f0641ca0e506c1be34c2e4eab49;hp=1c67f22bb284ab11ffda80bb90c0693661b0328c;hb=8b0ab0837ecdd5d28c7b6f31a605552f6942ca64;hpb=f31f8ceeaff0db558b63a46559e7d7464859d0c4 diff --git a/fd.c b/fd.c index 1c67f22b..23b89b5d 100644 --- a/fd.c +++ b/fd.c @@ -114,11 +114,10 @@ int file_exists(const char *fn) int para_select(int n, fd_set *readfds, fd_set *writefds, struct timeval *timeout_tv) { - int ret, err; - do { + int ret; + do ret = select(n, readfds, writefds, NULL, timeout_tv); - err = errno; - } while (ret < 0 && err == EINTR); + while (ret < 0 && errno == EINTR); if (ret < 0) return -ERRNO_TO_PARA_ERROR(errno); return ret; @@ -446,18 +445,14 @@ int para_munmap(void *start, size_t length) int write_ok(int fd) { - struct timeval tv = {0, 0}; + struct timeval tv; fd_set wfds; - int ret; -again: + FD_ZERO(&wfds); FD_SET(fd, &wfds); tv.tv_sec = 0; tv.tv_usec = 0; - ret = select(fd + 1, NULL, &wfds, NULL, &tv); - if (ret < 0 && errno == EINTR) - goto again; - return ret; + return para_select(fd + 1, NULL, &wfds, &tv); } /**