From bc7830ba80267a4a228ed1de62e0f65045b3d174 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 12 Jan 2017 11:27:40 +0100 Subject: Fix and improve vu-from-image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/util.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index 4654789..299dee8 100644 --- a/src/util.c +++ b/src/util.c @@ -112,18 +112,34 @@ int writeall(int fd, void *buf, size_t n) { char *buffer = buf; - size_t ptr = 0; ssize_t r; - while (ptr < n) { + while (n) { r = write(fd, buffer, n); if (r < 0) return -1; - buffer += (size_t)ptr; - n -= (size_t)ptr; + buffer += (size_t)r; + n -= (size_t)r; } return 0; } +ssize_t +readall(int fd, void *buf, size_t n) +{ + char *buffer = buf; + size_t ptr = 0; + ssize_t r; + for (;;) { + r = read(fd, buffer + ptr, n - ptr); + if (r < 0) + return -1; + if (r == 0) + break; + r += (size_t)r; + } + return r; +} + static inline pid_t enfork(int status) -- cgit v1.2.3-70-g09d2