X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fcompress.c;h=383f6a6e9665b84ac280b9d3c57e8f0f847c4f70;hp=4232206f445cb0702468240da6d4137072456c93;hb=a6dcc7e5924f9c27d3e9c6560a448b02ec28b65f;hpb=ad7bcf526d5ec54838bc9411a0e09a293845a015 diff --git a/src/journal/compress.c b/src/journal/compress.c index 4232206f4..383f6a6e9 100644 --- a/src/journal/compress.c +++ b/src/journal/compress.c @@ -589,14 +589,12 @@ int decompress_stream_lz4(int fdf, int fdt, off_t max_bytes) { return log_oom(); for (;;) { - ssize_t n, m; + ssize_t m; int r; - n = read(fdf, &header, sizeof(header)); - if (n < 0) - return -errno; - if (n != sizeof(header)) - return errno ? -errno : -EIO; + r = loop_read_exact(fdf, &header, sizeof(header), false); + if (r < 0) + return r; m = le32toh(header); if (m == 0) @@ -618,12 +616,9 @@ int decompress_stream_lz4(int fdf, int fdt, off_t max_bytes) { if (!GREEDY_REALLOC(buf, buf_size, m)) return log_oom(); - errno = 0; - n = loop_read(fdf, buf, m, false); - if (n < 0) - return n; - if (n != m) - return errno ? -errno : -EIO; + r = loop_read_exact(fdf, buf, m, false); + if (r < 0) + return r; r = LZ4_decompress_safe_continue(&lz4_data, buf, out, m, 4*LZ4_BUFSIZE); if (r <= 0) @@ -636,9 +631,9 @@ int decompress_stream_lz4(int fdf, int fdt, off_t max_bytes) { return -EFBIG; } - n = loop_write(fdt, out, r, false); - if (n < 0) - return n; + r = loop_write(fdt, out, r, false); + if (r < 0) + return r; } log_debug("LZ4 decompression finished (%zu -> %zu bytes, %.1f%%)",