xz: Refactor io_read() a bit.

This commit is contained in:
Lasse Collin 2020-01-26 13:47:31 +02:00
parent f6d2424534
commit 3891570324
1 changed files with 8 additions and 9 deletions

View File

@ -1107,16 +1107,16 @@ io_fix_src_pos(file_pair *pair, size_t rewind_size)
extern size_t extern size_t
io_read(file_pair *pair, io_buf *buf_union, size_t size) io_read(file_pair *pair, io_buf *buf, size_t size)
{ {
// We use small buffers here. // We use small buffers here.
assert(size < SSIZE_MAX); assert(size < SSIZE_MAX);
uint8_t *buf = buf_union->u8; size_t pos = 0;
size_t left = size;
while (left > 0) { while (pos < size) {
const ssize_t amount = read(pair->src_fd, buf, left); const ssize_t amount = read(
pair->src_fd, buf->u8 + pos, size - pos);
if (amount == 0) { if (amount == 0) {
pair->src_eof = true; pair->src_eof = true;
@ -1145,7 +1145,7 @@ io_read(file_pair *pair, io_buf *buf_union, size_t size)
case IO_WAIT_TIMEOUT: case IO_WAIT_TIMEOUT:
flush_needed = true; flush_needed = true;
return size - left; return pos;
default: default:
message_bug(); message_bug();
@ -1159,11 +1159,10 @@ io_read(file_pair *pair, io_buf *buf_union, size_t size)
return SIZE_MAX; return SIZE_MAX;
} }
buf += (size_t)(amount); pos += (size_t)(amount);
left -= (size_t)(amount);
} }
return size - left; return pos;
} }