*
*/
#include "config.h"
+
+#if defined(WIN32) || defined(__MINGW32__)
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
#include <sys/time.h>
#include <strings.h>
+#include "poll/poll.h"
+
int poll(struct pollfd fds[], nfds_t nfds, int tmo)
{
fd_set readfds, writefds, errorfds;
FD_ZERO(&writefds);
FD_ZERO(&errorfds);
- int maxfd = 0;
+ int maxfd= 0;
- for (int x = 0; x < nfds; ++x)
+ for (nfds_t x= 0; x < nfds; ++x)
{
if (fds[x].events & (POLLIN | POLLOUT))
{
#ifndef WIN32
if (fds[x].fd > maxfd)
{
- maxfd = fds[x].fd;
+ maxfd= fds[x].fd;
}
#endif
if (fds[x].events & POLLIN)
}
}
- struct timeval timeout = { .tv_sec = tmo / 1000,
- .tv_usec= (tmo % 1000) * 1000 };
- struct timeval *tp = &timeout;
+ struct timeval timeout= { .tv_sec = tmo / 1000,
+ .tv_usec= (tmo % 1000) * 1000 };
+ struct timeval *tp= &timeout;
if (tmo == -1)
{
- tp = NULL;
+ tp= NULL;
}
- int ret = select(maxfd + 1, &readfds, &writefds, &errorfds, tp);
+ int ret= select(maxfd + 1, &readfds, &writefds, &errorfds, tp);
if (ret <= 0)
{
return ret;
}
/* Iterate through all of them because I need to clear the revent map */
- for (int x = 0; x < nfds; ++x)
+ for (nfds_t x= 0; x < nfds; ++x)
{
- fds[x].revents = 0;
+ fds[x].revents= 0;
if (FD_ISSET(fds[x].fd, &readfds))
{
fds[x].revents |= POLLIN;