]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal/compress.h
tree-wide: drop 'This file is part of systemd' blurb
[thirdparty/systemd.git] / src / journal / compress.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
c2f1db8f 2#pragma once
e4e61fdb
LP
3
4/***
e4e61fdb 5 Copyright 2011 Lennart Poettering
e4e61fdb
LP
6***/
7
355b59e2 8#include <unistd.h>
e4e61fdb 9
d89c8fdf 10#include "journal-def.h"
e4e61fdb 11
d89c8fdf
ZJS
12const char* object_compressed_to_string(int compression);
13int object_compressed_from_string(const char *compression);
e4e61fdb 14
5d6f46b6
ZJS
15int compress_blob_xz(const void *src, uint64_t src_size,
16 void *dst, size_t dst_alloc_size, size_t *dst_size);
17int compress_blob_lz4(const void *src, uint64_t src_size,
18 void *dst, size_t dst_alloc_size, size_t *dst_size);
355b59e2 19
5d6f46b6
ZJS
20static inline int compress_blob(const void *src, uint64_t src_size,
21 void *dst, size_t dst_alloc_size, size_t *dst_size) {
d89c8fdf 22 int r;
349cc4a5 23#if HAVE_LZ4
5d6f46b6 24 r = compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size);
d89c8fdf
ZJS
25 if (r == 0)
26 return OBJECT_COMPRESSED_LZ4;
27#else
5d6f46b6 28 r = compress_blob_xz(src, src_size, dst, dst_alloc_size, dst_size);
d89c8fdf
ZJS
29 if (r == 0)
30 return OBJECT_COMPRESSED_XZ;
31#endif
32 return r;
33}
34
35int decompress_blob_xz(const void *src, uint64_t src_size,
fa1c4b51 36 void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
d89c8fdf 37int decompress_blob_lz4(const void *src, uint64_t src_size,
fa1c4b51 38 void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
d89c8fdf
ZJS
39int decompress_blob(int compression,
40 const void *src, uint64_t src_size,
fa1c4b51 41 void **dst, size_t *dst_alloc_size, size_t* dst_size, size_t dst_max);
d89c8fdf
ZJS
42
43int decompress_startswith_xz(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_lz4(const void *src, uint64_t src_size,
fa1c4b51
ZJS
48 void **buffer, size_t *buffer_size,
49 const void *prefix, size_t prefix_len,
d89c8fdf
ZJS
50 uint8_t extra);
51int decompress_startswith(int compression,
52 const void *src, uint64_t src_size,
fa1c4b51
ZJS
53 void **buffer, size_t *buffer_size,
54 const void *prefix, size_t prefix_len,
d89c8fdf
ZJS
55 uint8_t extra);
56
59f448cf
LP
57int compress_stream_xz(int fdf, int fdt, uint64_t max_bytes);
58int compress_stream_lz4(int fdf, int fdt, uint64_t max_bytes);
d89c8fdf 59
59f448cf
LP
60int decompress_stream_xz(int fdf, int fdt, uint64_t max_size);
61int decompress_stream_lz4(int fdf, int fdt, uint64_t max_size);
d89c8fdf 62
349cc4a5 63#if HAVE_LZ4
d89c8fdf
ZJS
64# define compress_stream compress_stream_lz4
65# define COMPRESSED_EXT ".lz4"
66#else
67# define compress_stream compress_stream_xz
68# define COMPRESSED_EXT ".xz"
69#endif
70
59f448cf 71int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes);