Numerous fixes related to compiling for mingw
[m6w6/libmemcached] / poll / poll.c
index 7f47b758b1c654707c1eff74f6993b3e2fc9730c..d7a7d9c7d73710cb7580e40a8f4c2bf1d792e1d2 100644 (file)
@@ -9,9 +9,17 @@
  *
  */
 #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;
@@ -19,16 +27,16 @@ int poll(struct pollfd fds[], nfds_t nfds, int tmo)
   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)
@@ -42,23 +50,23 @@ int poll(struct pollfd fds[], nfds_t nfds, int tmo)
     }
   }
 
-  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;