-#ifndef USE_POLL
-typedef fd_set *fd_setp_t;
-#define RFD_ISSET(fd, rfd, index) FD_ISSET((fd), (rfd))
-#define WFD_ISSET(fd, wfd, index) FD_ISSET((fd), (wfd))
-#define RFD_SET(fd, rfd, index, cptr) FD_SET((fd), (rfd))
-#define WFD_SET(fd, wfd, index, cptr) FD_SET((fd), (wfd))
-#define RWFD_SET(fd, wfd, index) FD_SET((fd), (wfd))
-#define RFD_CLR_OUT(fd, rfd, index) FD_CLR((fd), (rfd))
-#define WFD_CLR_OUT(fd, wfd, index) FD_CLR((fd), (wfd))
-#define LOC_FD(index) (index)
-#define LOC_CLIENTS(index) loc_clients[index]
-#define HIGHEST_INDEX highest_fd
-#else /* USE_POLL */
-typedef unsigned int fd_setp_t; /* Actually, an index to poll_fds[] */
-#ifdef _AIX
-#define POLLREADFLAGS (POLLIN|POLLMSG)
-#else
-# if defined(POLLMSG) && defined(POLLIN) && defined(POLLRDNORM)
-# define POLLREADFLAGS (POLLMSG|POLLIN|POLLRDNORM)
-# else
-# if defined(POLLIN) && defined(POLLRDNORM)
-# define POLLREADFLAGS (POLLIN|POLLRDNORM)
-# else
-# if defined(POLLIN)
-# define POLLREADFLAGS POLLIN
-# else
-# if defined(POLLRDNORM)
-# define POLLREADFLAGS POLLRDNORM
-# endif
-# endif
-# endif
-# endif
-#endif
-#if defined(POLLOUT) && defined(POLLWRNORM)
-#define POLLWRITEFLAGS (POLLOUT|POLLWRNORM)
-#else
-# if defined(POLLOUT)
-# define POLLWRITEFLAGS POLLOUT
-# else
-# if defined(POLLWRNORM)
-# define POLLWRITEFLAGS POLLWRNORM
-# endif
-# endif
-#endif
-#ifdef POLLHUP
-#define POLLERRORS (POLLHUP|POLLERR)
-#else
-#define POLLERRORS POLLERR
-#endif
-#define RFD_ISSET(fd, rfd, index) \
- ((poll_fds[index].revents & POLLREADFLAGS) || \
- ((poll_fds[index].events & POLLREADFLAGS) && \
- (poll_fds[index].revents & POLLERRORS)))
-#define WFD_ISSET(fd, wfd, index) \
- ((poll_fds[index].revents & POLLWRITEFLAGS) || \
- ((poll_fds[index].events & POLLWRITEFLAGS) && \
- (poll_fds[index].revents & POLLERRORS)))
-#define RFD_SET(fdes, rfd, index, cptr) \
- do { \
- poll_fds[index].fd = fdes; \
- poll_cptr[index] = cptr; \
- poll_fds[index].events = POLLREADFLAGS; \
- added = TRUE; \
- } while(0)
-#define WFD_SET(fdes, wfd, index, cptr) \
- do { \
- poll_fds[index].fd = fdes; \
- poll_cptr[index] = cptr; \
- if (added) \
- poll_fds[index].events |= POLLWRITEFLAGS; \
- else \
- { \
- poll_fds[index].events = POLLWRITEFLAGS; \
- added = TRUE; \
- } \
- } while(0)
-/* This identical to WFD_SET() when used after a call to RFD_SET(): */
-#define RWFD_SET(fd, wfd, index) poll_fds[index].events |= POLLWRITEFLAGS
-/* [RW]FD_CLR_OUT() clears revents, not events */
-#define RFD_CLR_OUT(fd, rfd, index) poll_fds[index].revents &= ~POLLREADFLAGS
-#define WFD_CLR_OUT(fd, wfd, index) poll_fds[index].revents &= ~POLLWRITEFLAGS
-#define LOC_FD(index) (poll_fds[index].fd)
-#define LOC_CLIENTS(index) (poll_cptr[index])
-#define HIGHEST_INDEX (currfd_index - 1)
-#endif /* USE_POLL */