Ensure chunker is refilled up to capacity - dedup - deduplicating backup program HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 9af5dd1c8a0f4ed051b7247ca759263f5cfee054 DIR parent 1f27546ac6b0a4fd6f0c5198afa34d5220e57107 HTML Author: sin <sin@2f30.org> Date: Thu, 21 Feb 2019 14:57:30 +0000 Ensure chunker is refilled up to capacity Previously we were not refilling the chunker up to its max capacity when reading from a pipe. Diffstat: M chunker.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) --- DIR diff --git a/chunker.c b/chunker.c @@ -81,11 +81,16 @@ fill_chunker(struct chunker *chunker) uint8_t *bp; ssize_t n; - bp = &chunker->buf[chunker->wpos]; - n = read(chunker->fd, bp, chunker->cap - chunker->wpos); - if (n < 0) - err(1, "read"); - chunker->wpos += n; + while (chunker->cap != chunker->wpos) { + bp = &chunker->buf[chunker->wpos]; + n = read(chunker->fd, bp, chunker->cap - chunker->wpos); + if (n < 0) + err(1, "read"); + else if (n == 0) + break; + chunker->wpos += n; + } + return chunker->wpos; }