From: Jeetu Golani Date: Thu, 22 Apr 2010 19:17:16 +0000 (+0530) Subject: Replaced read() in read_block and _xcb_in_read() with recv for all X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=inline;h=2dcf8b025be88a25d4333abdc28d425b88238d96;p=free-sw%2Fxcb%2Flibxcb Replaced read() in read_block and _xcb_in_read() with recv for all platforms. MSG_WAITALL is undefined in MinGW so it's been explicitly defined in xcb_in.c --- diff --git a/src/xcb_in.c b/src/xcb_in.c index b481295..e2f9936 100644 --- a/src/xcb_in.c +++ b/src/xcb_in.c @@ -39,6 +39,7 @@ #include #elif !defined _WIN32 #include +#include #endif #ifdef _WIN32 @@ -49,6 +50,11 @@ #define XCB_REPLY 1 #define XCB_XGE_EVENT 35 +/* required for compiling for Win32 using MinGW */ +#ifndef MSG_WAITALL +#define MSG_WAITALL 0 +#endif + struct event_list { xcb_generic_event_t *event; struct event_list *next; @@ -271,12 +277,7 @@ static int read_block(const int fd, void *buf, const ssize_t len) int done = 0; while(done < len) { -#ifndef _WIN32 - int ret = read(fd, ((char *) buf) + done, len - done); -#else - int ret = recv(fd, ((char *) buf) + done, len - done,0); -#endif /* !_WIN32 */ - + int ret = recv(fd, ((char *) buf) + done, len - done,MSG_WAITALL); if(ret > 0) done += ret; #ifndef _WIN32 @@ -681,11 +682,7 @@ void _xcb_in_replies_done(xcb_connection_t *c) int _xcb_in_read(xcb_connection_t *c) { -#ifndef _WIN32 - int n = read(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len); -#else - int n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len,0); -#endif /* !_WIN32 */ + int n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len,MSG_WAITALL); if(n > 0) c->in.queue_len += n; while(read_packet(c))