]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
c2f1db8f | 2 | #pragma once |
e4e61fdb | 3 | |
355b59e2 | 4 | #include <unistd.h> |
e4e61fdb | 5 | |
d89c8fdf | 6 | #include "journal-def.h" |
e4e61fdb | 7 | |
d89c8fdf ZJS |
8 | const char* object_compressed_to_string(int compression); |
9 | int object_compressed_from_string(const char *compression); | |
e4e61fdb | 10 | |
5d6f46b6 ZJS |
11 | int compress_blob_xz(const void *src, uint64_t src_size, |
12 | void *dst, size_t dst_alloc_size, size_t *dst_size); | |
13 | int compress_blob_lz4(const void *src, uint64_t src_size, | |
14 | void *dst, size_t dst_alloc_size, size_t *dst_size); | |
355b59e2 | 15 | |
5d6f46b6 ZJS |
16 | static inline int compress_blob(const void *src, uint64_t src_size, |
17 | void *dst, size_t dst_alloc_size, size_t *dst_size) { | |
d89c8fdf | 18 | int r; |
349cc4a5 | 19 | #if HAVE_LZ4 |
5d6f46b6 | 20 | r = compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size); |
d89c8fdf ZJS |
21 | if (r == 0) |
22 | return OBJECT_COMPRESSED_LZ4; | |
23 | #else | |
5d6f46b6 | 24 | r = compress_blob_xz(src, src_size, dst, dst_alloc_size, dst_size); |
d89c8fdf ZJS |
25 | if (r == 0) |
26 | return OBJECT_COMPRESSED_XZ; | |
27 | #endif | |
28 | return r; | |
29 | } | |
30 | ||
31 | int decompress_blob_xz(const void *src, uint64_t src_size, | |
fa1c4b51 | 32 | void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max); |
d89c8fdf | 33 | int decompress_blob_lz4(const void *src, uint64_t src_size, |
fa1c4b51 | 34 | void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max); |
d89c8fdf ZJS |
35 | int decompress_blob(int compression, |
36 | const void *src, uint64_t src_size, | |
fa1c4b51 | 37 | void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max); |
d89c8fdf ZJS |
38 | |
39 | int decompress_startswith_xz(const void *src, uint64_t src_size, | |
fa1c4b51 ZJS |
40 | void **buffer, size_t *buffer_size, |
41 | const void *prefix, size_t prefix_len, | |
d89c8fdf ZJS |
42 | uint8_t extra); |
43 | int decompress_startswith_lz4(const void *src, uint64_t src_size, | |
fa1c4b51 ZJS |
44 | void **buffer, size_t *buffer_size, |
45 | const void *prefix, size_t prefix_len, | |
d89c8fdf ZJS |
46 | uint8_t extra); |
47 | int decompress_startswith(int compression, | |
48 | const void *src, uint64_t src_size, | |
fa1c4b51 ZJS |
49 | void **buffer, size_t *buffer_size, |
50 | const void *prefix, size_t prefix_len, | |
d89c8fdf ZJS |
51 | uint8_t extra); |
52 | ||
59f448cf LP |
53 | int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes); |
54 | int compress_stream_lz4(int fdf, int fdt, uint64_t max_bytes); | |
ef5924aa | 55 | int compress_stream_zstd(int fdf, int fdt, uint64_t max_bytes); |
d89c8fdf | 56 | |
59f448cf LP |
57 | int decompress_stream_xz(int fdf, int fdt, uint64_t max_size); |
58 | int decompress_stream_lz4(int fdf, int fdt, uint64_t max_size); | |
ef5924aa | 59 | int decompress_stream_zstd(int fdf, int fdt, uint64_t max_size); |
d89c8fdf | 60 | |
ef5924aa NL |
61 | #if HAVE_ZSTD |
62 | # define compress_stream compress_stream_zstd | |
63 | # define COMPRESSED_EXT ".zst" | |
64 | #elif HAVE_LZ4 | |
d89c8fdf ZJS |
65 | # define compress_stream compress_stream_lz4 |
66 | # define COMPRESSED_EXT ".lz4" | |
67 | #else | |
68 | # define compress_stream compress_stream_xz | |
69 | # define COMPRESSED_EXT ".xz" | |
70 | #endif | |
71 | ||
59f448cf | 72 | int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes); |