diff options
-rw-r--r-- | fedora/tzdata-update.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/fedora/tzdata-update.c b/fedora/tzdata-update.c index 38539817d3..7f12322bf4 100644 --- a/fedora/tzdata-update.c +++ b/fedora/tzdata-update.c @@ -400,12 +400,18 @@ char zonename[1024]; ssize_t readall (int fd, void *buf, size_t len) { + INTERNAL_SYSCALL_DECL (err); size_t n = len; ssize_t ret; do { ret = INTERNAL_SYSCALL (read, err, 3, fd, buf, n); - if (ret <= 0) + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) + { + ret = -1; + break; + } + else if (ret == 0) break; buf = (char *) buf + ret; n -= ret; @@ -417,12 +423,18 @@ readall (int fd, void *buf, size_t len) ssize_t writeall (int fd, const void *buf, size_t len) { + INTERNAL_SYSCALL_DECL (err); size_t n = len; ssize_t ret; do { ret = INTERNAL_SYSCALL (write, err, 3, fd, buf, n); - if (ret <= 0) + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) + { + ret = -1; + break; + } + else if (ret == 0) break; buf = (const char *) buf + ret; n -= ret; |