/** \file fd.c Helper functions for file descriptor handling. */
+#include <regex.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/mman.h>
#include "para.h"
#include "error.h"
#include "string.h"
+
/**
* Write a buffer to a file descriptor, re-write on short writes.
*
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;
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);
}
/**