mirror of https://git.tukaani.org/xz.git
xz: Refactor io_read() a bit.
This commit is contained in:
parent
4ae9ab70cd
commit
dcca70fe9f
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue