#include <assert.h>
#include <fcntl.h>
#include <unistd.h>
+#include <sys/types.h>
+#include <sys/socket.h>
#include "wayland-util.h"
#include "connection.h"
{
struct wl_buffer *b;
struct iovec iov[2];
+ struct msghdr msg;
int len, head, tail, count, size, available;
if (mask & WL_CONNECTION_READABLE) {
count = 2;
}
do {
- len = readv(connection->fd, iov, count);
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = count;
+ msg.msg_control = NULL;
+ msg.msg_controllen = 0;
+ len = recvmsg(connection->fd, &msg, 0);
} while (len < 0 && errno == EINTR);
if (len < 0) {
fprintf(stderr,
count = 2;
}
do {
- len = writev(connection->fd, iov, count);
+ msg.msg_name = NULL;
+ msg.msg_namelen = 0;
+ msg.msg_iov = iov;
+ msg.msg_iovlen = count;
+ msg.msg_control = NULL;
+ msg.msg_controllen = 0;
+ len = sendmsg(connection->fd, &msg, 0);
} while (len < 0 && errno == EINTR);
if (len < 0) {
fprintf(stderr, "write error for connection %p: %m\n", connection);