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_TIME
|
||||||
AC_HEADER_SYS_WAIT
|
AC_HEADER_SYS_WAIT
|
||||||
AC_CHECK_HEADERS([sys/ioctl.h alloca.h memory.h malloc.h sysexits.h \
|
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
|
dnl Checks for libary functions
|
||||||
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||||
|
14
src/mypoll.c
14
src/mypoll.c
@ -1,8 +1,14 @@
|
|||||||
#include "mypoll.h"
|
#include "mypoll.h"
|
||||||
|
|
||||||
#define MYPOLL_READ (1<<1)
|
#ifdef HAVE_POLL_H
|
||||||
#define MYPOLL_WRITE (1<<2)
|
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) {
|
int mypoll(pollfd_struct* fds, int nfds, int timeout) {
|
||||||
fd_set rset, wset, *r=0, *w=0;
|
fd_set rset, wset, *r=0, *w=0;
|
||||||
int i, ret, maxfd=-1;
|
int i, ret, maxfd=-1;
|
||||||
@ -39,4 +45,4 @@ int mypoll(pollfd_struct* fds, int nfds, int timeout) {
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
11
src/mypoll.h
11
src/mypoll.h
@ -1,21 +1,28 @@
|
|||||||
#ifndef MYPOLL_H
|
#ifndef MYPOLL_H
|
||||||
#define MYPOLL_H
|
#define MYPOLL_H
|
||||||
|
|
||||||
#include <sys/select.h>
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef HAVE_POLL_H
|
#ifdef HAVE_POLL_H
|
||||||
|
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
typedef struct pollfd pollfd_struct;
|
typedef struct pollfd pollfd_struct;
|
||||||
|
|
||||||
|
#define MYPOLL_READ POLLIN
|
||||||
|
#define MYPOLL_WRITE POLLOUT
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#include <sys/select.h>
|
||||||
typedef struct mypollfd {
|
typedef struct mypollfd {
|
||||||
int fd;
|
int fd;
|
||||||
short events;
|
short events;
|
||||||
short revents;
|
short revents;
|
||||||
} pollfd_struct;
|
} pollfd_struct;
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MYPOLL_READ (1<<1)
|
#define MYPOLL_READ (1<<1)
|
||||||
#define MYPOLL_WRITE (1<<2)
|
#define MYPOLL_WRITE (1<<2)
|
||||||
|
#endif
|
||||||
|
|
||||||
int mypoll(pollfd_struct* fds, int nfds, int timeout);
|
int mypoll(pollfd_struct* fds, int nfds, int timeout);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user