summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fedora/tzdata-update.c16
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;