use poll() where available
This commit is contained in:
parent
10cdee3bc5
commit
bd92446184
@ -141,7 +141,7 @@ AC_HEADER_STDC
|
||||
AC_HEADER_TIME
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS([sys/ioctl.h alloca.h memory.h malloc.h sysexits.h \
|
||||
values.h])
|
||||
values.h poll.h])
|
||||
|
||||
dnl Checks for libary functions
|
||||
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
|
14
src/mypoll.c
14
src/mypoll.c
@ -1,8 +1,14 @@
|
||||
#include "mypoll.h"
|
||||
|
||||
#define MYPOLL_READ (1<<1)
|
||||
#define MYPOLL_WRITE (1<<2)
|
||||
|
||||
#ifdef HAVE_POLL_H
|
||||
int mypoll(pollfd_struct* fds, int nfds, int timeout) {
|
||||
int i, ret;
|
||||
for(i=0; i<nfds; ++i) if(!fds[i].events) fds[i].fd=~fds[i].fd;
|
||||
ret = poll(fds, nfds, timeout <= 0 ? timeout : timeout*1000);
|
||||
for(i=0; i<nfds; ++i) if(!fds[i].events) fds[i].fd=~fds[i].fd;
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
int mypoll(pollfd_struct* fds, int nfds, int timeout) {
|
||||
fd_set rset, wset, *r=0, *w=0;
|
||||
int i, ret, maxfd=-1;
|
||||
@ -39,4 +45,4 @@ int mypoll(pollfd_struct* fds, int nfds, int timeout) {
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
11
src/mypoll.h
11
src/mypoll.h
@ -1,21 +1,28 @@
|
||||
#ifndef MYPOLL_H
|
||||
#define MYPOLL_H
|
||||
|
||||
#include <sys/select.h>
|
||||
#include "config.h"
|
||||
|
||||
#ifdef HAVE_POLL_H
|
||||
|
||||
#include <poll.h>
|
||||
typedef struct pollfd pollfd_struct;
|
||||
|
||||
#define MYPOLL_READ POLLIN
|
||||
#define MYPOLL_WRITE POLLOUT
|
||||
|
||||
#else
|
||||
|
||||
#include <sys/select.h>
|
||||
typedef struct mypollfd {
|
||||
int fd;
|
||||
short events;
|
||||
short revents;
|
||||
} pollfd_struct;
|
||||
#endif
|
||||
|
||||
#define MYPOLL_READ (1<<1)
|
||||
#define MYPOLL_WRITE (1<<2)
|
||||
#endif
|
||||
|
||||
int mypoll(pollfd_struct* fds, int nfds, int timeout);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user