X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libi3%2Fipc_send_message.c;h=80709ed3b255c638933e0644841accecc7eb4318;hb=42515308e72e4ea6f6b49508c1ba286263dded64;hp=c5560c0de9789aef20e27ec667cfd36c7ce0464a;hpb=7b0d75ee0af44d91b46d22853a55e2f491d92385;p=i3%2Fi3 diff --git a/libi3/ipc_send_message.c b/libi3/ipc_send_message.c index c5560c0d..80709ed3 100644 --- a/libi3/ipc_send_message.c +++ b/libi3/ipc_send_message.c @@ -28,38 +28,15 @@ int ipc_send_message(int sockfd, const uint32_t message_size, const uint32_t message_type, const uint8_t *payload) { const i3_ipc_header_t header = { /* We don’t use I3_IPC_MAGIC because it’s a 0-terminated C string. */ - .magic = { 'i', '3', '-', 'i', 'p', 'c' }, + .magic = {'i', '3', '-', 'i', 'p', 'c'}, .size = message_size, - .type = message_type - }; + .type = message_type}; - int sent_bytes = 0; - int n = 0; + if (writeall(sockfd, ((void *)&header), sizeof(i3_ipc_header_t)) == -1) + return -1; - /* This first loop is basically unnecessary. No operating system has - * buffers which cannot fit 14 bytes into them, so the write() will only be - * called once. */ - while (sent_bytes < sizeof(i3_ipc_header_t)) { - if ((n = write(sockfd, ((void*)&header) + sent_bytes, sizeof(i3_ipc_header_t) - sent_bytes)) == -1) { - if (errno == EAGAIN) - continue; - return -1; - } - - sent_bytes += n; - } - - sent_bytes = 0; - - while (sent_bytes < message_size) { - if ((n = write(sockfd, payload + sent_bytes, message_size - sent_bytes)) == -1) { - if (errno == EAGAIN) - continue; - return -1; - } - - sent_bytes += n; - } + if (writeall(sockfd, payload, message_size) == -1) + return -1; return 0; }