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