darwin: Use read(2) rather than recv(2)
[free-sw/xcb/libxcb] / src / xcb_util.c
index 64a1f6d..f17aa3c 100644 (file)
@@ -235,6 +235,11 @@ static int _xcb_open(const char *host, char *protocol, const int display)
     fd = _xcb_open_unix(protocol, file);
     free(file);
 
+    if (fd < 0 && !protocol && *host == '\0') {
+           unsigned short port = X_TCP_PORT + display;
+           fd = _xcb_open_tcp(host, protocol, port);
+    }
+
     return fd;
 #endif /* !_WIN32 */
     return -1; /* if control reaches here then something has gone wrong */
@@ -426,11 +431,22 @@ xcb_connection_t *xcb_connect_to_display_with_auth_info(const char *displayname,
     if(!parsed) {
         c = _xcb_conn_ret_error(XCB_CONN_CLOSED_PARSE_ERR);
         goto out;
-    } else
+    } else {
+#ifdef _WIN32
+        WSADATA wsaData;
+        if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
+            c = _xcb_conn_ret_error(XCB_CONN_ERROR);
+            goto out;
+        }
+#endif
         fd = _xcb_open(host, protocol, display);
+    }
 
     if(fd == -1) {
         c = _xcb_conn_ret_error(XCB_CONN_ERROR);
+#ifdef _WIN32
+        WSACleanup();
+#endif
         goto out;
     }