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
This commit is contained in:
Jeetu Golani 2010-04-23 00:47:16 +05:30
parent 56962e42a5
commit 2dcf8b025b

View File

@ -39,6 +39,7 @@
#include <poll.h>
#elif !defined _WIN32
#include <sys/select.h>
#include <sys/socket.h>
#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))