configure: Check for broken snprintf().
[paraslash.git] / fd.c
diff --git a/fd.c b/fd.c
index 1c67f22..0fb7960 100644 (file)
--- a/fd.c
+++ b/fd.c
@@ -6,6 +6,7 @@
 
 /** \file fd.c Helper functions for file descriptor handling. */
 
+#include <regex.h>
 #include <sys/types.h>
 #include <dirent.h>
 #include <sys/mman.h>
@@ -15,6 +16,7 @@
 #include "para.h"
 #include "error.h"
 #include "string.h"
+
 /**
  * Write a buffer to a file descriptor, re-write on short writes.
  *
@@ -114,11 +116,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;
@@ -420,7 +421,7 @@ out:
  * \param start The start address of the memory mapping.
  * \param length The size of the mapping.
  *
- * \return Positive on success, \p -E_MUNMAP on errors.
+ * \return Standard.
  *
  * \sa munmap(2), mmap_full_file().
  */
@@ -446,18 +447,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);
 }
 
 /**