From cf74e8d7279606f8bc1dfaa8f3a7266b5fb9e900 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 19 Jul 2026 16:05:56 +0300 Subject: simplify xread/xwrite --- src/server.c | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) (limited to 'src/server.c') diff --git a/src/server.c b/src/server.c index e49cea9..468c4d6 100644 --- a/src/server.c +++ b/src/server.c @@ -34,11 +34,8 @@ struct server_ctx { /* buf is sized by count */ static ssize_t readx(int fd, void *buf, size_t count) { - /* total read */ - size_t t = 0; - while (1) { - ssize_t r = read(fd, buf + t, count - t); + ssize_t r = read(fd, buf, count); if (r == -1) { if (errno == EINTR) /* read interrupted, try again */ @@ -46,28 +43,21 @@ static ssize_t readx(int fd, void *buf, size_t count) if (errno == EWOULDBLOCK) /* no more data to read for now */ - return t; - - /* otherwise some unknown error, return it */ - return r; + return 0; } /* we've read as many bytes as are currently available */ - t += r; - return t; + return r; } /* should never be reached, but keep here to avoid warnings */ - return t; + return 0; } static ssize_t writex(int fd, void *buf, size_t count) { - /* total written */ - size_t t = 0; - while (1) { - ssize_t r = write(fd, buf + t, count - t); + ssize_t r = write(fd, buf, count); if (r == -1) { if (errno == EINTR) /* write interrupted, try again */ @@ -75,21 +65,14 @@ static ssize_t writex(int fd, void *buf, size_t count) if (errno == EWOULDBLOCK) /* no more data to read for now */ - return t; - - /* otherwise some unknown error, return it */ - return r; + return 0; } - t += r; - - /* we've written the full buffer, quit */ - if (t == count) - return t; + return r; } /* should never be reached, but keep here to avoid warnings */ - return t; + return 0; } static int new_connection(struct server_ctx *ctx, int new_conn_fd) -- cgit v1.3