win32: Fix compilation
diff --git a/common/socket.c b/common/socket.c
index 0ee8105..777b23e 100644
--- a/common/socket.c
+++ b/common/socket.c
@@ -52,6 +52,9 @@
 #ifndef ECONNRESET
 #define ECONNRESET 108
 #endif
+#ifndef ETIMEDOUT
+#define ETIMEDOUT 138
+#endif
 
 static int verbose = 0;
 
diff --git a/tools/icat.c b/tools/icat.c
index 9296a23..42f7420 100644
--- a/tools/icat.c
+++ b/tools/icat.c
@@ -29,19 +29,35 @@
 #include <stddef.h>
 #include <unistd.h>
 #include <errno.h>
+#ifdef WIN32
+#include <windows.h>
+#include <winsock2.h>
+#else
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/ioctl.h>
+#endif
 
 #include "usbmuxd.h"
+#include "socket.h"
 
 static size_t read_data_socket(int fd, uint8_t* buf, size_t bufsize)
 {
-    size_t bytesavailable;
+#ifdef WIN32
+    u_long bytesavailable = 0;
+    if (fd == STDIN_FILENO) {
+        bytesavailable = bufsize;
+    } else if (ioctlsocket(fd, FIONREAD, &bytesavailable) != 0) {
+        perror("ioctlsocket FIONREAD failed");
+        exit(1);
+    }
+#else
+    size_t bytesavailable = 0;
     if (ioctl(fd, FIONREAD, &bytesavailable) != 0) {
         perror("ioctl FIONREAD failed");
         exit(1);
     }
+#endif
     size_t bufread = (bytesavailable >= bufsize) ? bufsize:bytesavailable;
     ssize_t ret = read(fd, buf, bufread);
     if (ret < 0) {
@@ -143,6 +159,6 @@
         }
     }
 
-    close(devfd);
+    socket_close(devfd);
     return ret;
 }
diff --git a/tools/iproxy.c b/tools/iproxy.c
index 113938e..a018cf7 100644
--- a/tools/iproxy.c
+++ b/tools/iproxy.c
@@ -44,6 +44,10 @@
 #include "socket.h"
 #include "usbmuxd.h"
 
+#ifndef ETIMEDOUT
+#define ETIMEDOUT 138
+#endif
+
 static uint16_t listen_port = 0;
 static uint16_t device_port = 0;
 static char* device_udid = NULL;