]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal/compress.h
Merge pull request #16059 from keszybz/resolve-single-label-names
[thirdparty/systemd.git] / src / journal / compress.h
CommitLineData
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
8const char* object_compressed_to_string(int compression);
9int object_compressed_from_string(const char *compression);
e4e61fdb 10
5d6f46b6
ZJS
11int compress_blob_xz(const void *src, uint64_t src_size,
12 void *dst, size_t dst_alloc_size, size_t *dst_size);
13int 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
16static 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
31int 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 33int 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
35int 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
39int 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);
43int 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);
47int 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
53int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes);
54int compress_stream_lz4(int fdf, int fdt, uint64_t max_bytes);
ef5924aa 55int compress_stream_zstd(int fdf, int fdt, uint64_t max_bytes);
d89c8fdf 56
59f448cf
LP
57int decompress_stream_xz(int fdf, int fdt, uint64_t max_size);
58int decompress_stream_lz4(int fdf, int fdt, uint64_t max_size);
ef5924aa 59int 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 72int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes);