From: Junio C Hamano Date: Tue, 20 Aug 2013 18:27:51 GMT Subject: Re: [PATCH] stream_to_pack: xread does not guarantee to read all requested bytes Message-ID: In-Reply-To: Antoine Pelisse writes: > I was actually wondering when it's better to use xread() over > read_in_full()? When the caller wants to do more control over a read that may have to loop. For example, this loop in builtin/index-pack.c::fill() do { ssize_t ret = xread(input_fd, input_buffer + input_len, sizeof(input_buffer) - input_len); if (ret <= 0) { if (!ret) die(_("early EOF")); die_errno(_("read error on input")); } input_len += ret; if (from_stdin) display_throughput(progress, consumed_bytes + input_len); } while (input_len < min); cannot be replaced blindly with read_in_full() because (1) the caller wants to do the "display_throughput()" part in the loop, and (2) the caller wants to fill at least "min" bytes but can happily accept to read more up to the size of the input_buffer.