-rw-r--r-- | cache.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -83,3 +83,3 @@ static int print_slot(struct cache_slot *slot) { - ssize_t i; + ssize_t i, j; @@ -89,6 +89,9 @@ static int print_slot(struct cache_slot *slot) - while((i = xread(slot->cache_fd, slot->buf, sizeof(slot->buf))) > 0) - i = xwrite(STDOUT_FILENO, slot->buf, i); + do { + i = j = xread(slot->cache_fd, slot->buf, sizeof(slot->buf)); + if (i > 0) + j = xwrite(STDOUT_FILENO, slot->buf, i); + } while (i > 0 && j == i); - if (i < 0) + if (i < 0 || j != i) return errno; |