]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
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); | |
8653185a LP |
15 | int compress_blob_zstd(const void *src, uint64_t src_size, |
16 | void *dst, size_t dst_alloc_size, size_t *dst_size); | |
355b59e2 | 17 | |
5d6f46b6 ZJS |
18 | static inline int compress_blob(const void *src, uint64_t src_size, |
19 | void *dst, size_t dst_alloc_size, size_t *dst_size) { | |
d89c8fdf | 20 | int r; |
8653185a LP |
21 | #if HAVE_ZSTD |
22 | r = compress_blob_zstd(src, src_size, dst, dst_alloc_size, dst_size); | |
23 | if (r == 0) | |
24 | return OBJECT_COMPRESSED_ZSTD; | |
25 | #elif HAVE_LZ4 | |
5d6f46b6 | 26 | r = compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size); |
d89c8fdf ZJS |
27 | if (r == 0) |
28 | return OBJECT_COMPRESSED_LZ4; | |
c85cf04f | 29 | #elif HAVE_XZ |
5d6f46b6 | 30 | r = compress_blob_xz(src, src_size, dst, dst_alloc_size, dst_size); |
d89c8fdf ZJS |
31 | if (r == 0) |
32 | return OBJECT_COMPRESSED_XZ; | |
c85cf04f LP |
33 | #else |
34 | r = -EOPNOTSUPP; | |
d89c8fdf ZJS |
35 | #endif |
36 | return r; | |
37 | } | |
38 | ||
39 | int decompress_blob_xz(const void *src, uint64_t src_size, | |
319a4f4b | 40 | void **dst, size_t* dst_size, size_t dst_max); |
d89c8fdf | 41 | int decompress_blob_lz4(const void *src, uint64_t src_size, |
319a4f4b | 42 | void **dst, size_t* dst_size, size_t dst_max); |
8653185a | 43 | int decompress_blob_zstd(const void *src, uint64_t src_size, |
319a4f4b | 44 | void **dst, size_t* dst_size, size_t dst_max); |
d89c8fdf ZJS |
45 | int decompress_blob(int compression, |
46 | const void *src, uint64_t src_size, | |
319a4f4b | 47 | void **dst, size_t* dst_size, size_t dst_max); |
d89c8fdf ZJS |
48 | |
49 | int decompress_startswith_xz(const void *src, uint64_t src_size, | |
319a4f4b | 50 | void **buffer, |
fa1c4b51 | 51 | const void *prefix, size_t prefix_len, |
d89c8fdf ZJS |
52 | uint8_t extra); |
53 | int decompress_startswith_lz4(const void *src, uint64_t src_size, | |
319a4f4b | 54 | void **buffer, |
fa1c4b51 | 55 | const void *prefix, size_t prefix_len, |
d89c8fdf | 56 | uint8_t extra); |
8653185a | 57 | int decompress_startswith_zstd(const void *src, uint64_t src_size, |
319a4f4b | 58 | void **buffer, |
8653185a LP |
59 | const void *prefix, size_t prefix_len, |
60 | uint8_t extra); | |
d89c8fdf ZJS |
61 | int decompress_startswith(int compression, |
62 | const void *src, uint64_t src_size, | |
319a4f4b | 63 | void **buffer, |
fa1c4b51 | 64 | const void *prefix, size_t prefix_len, |
d89c8fdf ZJS |
65 | uint8_t extra); |
66 | ||
59f448cf LP |
67 | int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes); |
68 | int compress_stream_lz4(int fdf, int fdt, uint64_t max_bytes); | |
ef5924aa | 69 | int compress_stream_zstd(int fdf, int fdt, uint64_t max_bytes); |
d89c8fdf | 70 | |
59f448cf LP |
71 | int decompress_stream_xz(int fdf, int fdt, uint64_t max_size); |
72 | int decompress_stream_lz4(int fdf, int fdt, uint64_t max_size); | |
ef5924aa | 73 | int decompress_stream_zstd(int fdf, int fdt, uint64_t max_size); |
d89c8fdf | 74 | |
ef5924aa NL |
75 | #if HAVE_ZSTD |
76 | # define compress_stream compress_stream_zstd | |
77 | # define COMPRESSED_EXT ".zst" | |
78 | #elif HAVE_LZ4 | |
d89c8fdf ZJS |
79 | # define compress_stream compress_stream_lz4 |
80 | # define COMPRESSED_EXT ".lz4" | |
c85cf04f | 81 | #elif HAVE_XZ |
d89c8fdf ZJS |
82 | # define compress_stream compress_stream_xz |
83 | # define COMPRESSED_EXT ".xz" | |
c85cf04f LP |
84 | #else |
85 | static inline int compress_stream(int fdf, int fdt, uint64_t max_size) { | |
86 | return -EOPNOTSUPP; | |
87 | } | |
88 | # define COMPRESSED_EXT "" | |
d89c8fdf ZJS |
89 | #endif |
90 | ||
59f448cf | 91 | int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes); |