]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/journal/compress.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 #include "journal-def.h"
8 const char* object_compressed_to_string(int compression
);
9 int object_compressed_from_string(const char *compression
);
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
);
15 int compress_blob_zstd(const void *src
, uint64_t src_size
,
16 void *dst
, size_t dst_alloc_size
, size_t *dst_size
);
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
) {
22 r
= compress_blob_zstd(src
, src_size
, dst
, dst_alloc_size
, dst_size
);
24 return OBJECT_COMPRESSED_ZSTD
;
26 r
= compress_blob_lz4(src
, src_size
, dst
, dst_alloc_size
, dst_size
);
28 return OBJECT_COMPRESSED_LZ4
;
30 r
= compress_blob_xz(src
, src_size
, dst
, dst_alloc_size
, dst_size
);
32 return OBJECT_COMPRESSED_XZ
;
39 int decompress_blob_xz(const void *src
, uint64_t src_size
,
40 void **dst
, size_t *dst_alloc_size
, size_t* dst_size
, size_t dst_max
);
41 int decompress_blob_lz4(const void *src
, uint64_t src_size
,
42 void **dst
, size_t *dst_alloc_size
, size_t* dst_size
, size_t dst_max
);
43 int decompress_blob_zstd(const void *src
, uint64_t src_size
,
44 void **dst
, size_t *dst_alloc_size
, size_t* dst_size
, size_t dst_max
);
45 int decompress_blob(int compression
,
46 const void *src
, uint64_t src_size
,
47 void **dst
, size_t *dst_alloc_size
, size_t* dst_size
, size_t dst_max
);
49 int decompress_startswith_xz(const void *src
, uint64_t src_size
,
50 void **buffer
, size_t *buffer_size
,
51 const void *prefix
, size_t prefix_len
,
53 int decompress_startswith_lz4(const void *src
, uint64_t src_size
,
54 void **buffer
, size_t *buffer_size
,
55 const void *prefix
, size_t prefix_len
,
57 int decompress_startswith_zstd(const void *src
, uint64_t src_size
,
58 void **buffer
, size_t *buffer_size
,
59 const void *prefix
, size_t prefix_len
,
61 int decompress_startswith(int compression
,
62 const void *src
, uint64_t src_size
,
63 void **buffer
, size_t *buffer_size
,
64 const void *prefix
, size_t prefix_len
,
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
);
69 int compress_stream_zstd(int fdf
, int fdt
, uint64_t max_bytes
);
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
);
73 int decompress_stream_zstd(int fdf
, int fdt
, uint64_t max_size
);
76 # define compress_stream compress_stream_zstd
77 # define COMPRESSED_EXT ".zst"
79 # define compress_stream compress_stream_lz4
80 # define COMPRESSED_EXT ".lz4"
82 # define compress_stream compress_stream_xz
83 # define COMPRESSED_EXT ".xz"
85 static inline int compress_stream(int fdf
, int fdt
, uint64_t max_size
) {
88 # define COMPRESSED_EXT ""
91 int decompress_stream(const char *filename
, int fdf
, int fdt
, uint64_t max_bytes
);