diff --git a/src/basic/compress.c b/src/basic/compress.c index 0f62fb95f5..55a204f9ce 100644 --- a/src/basic/compress.c +++ b/src/basic/compress.c @@ -424,6 +424,32 @@ int dlopen_bzip2(int log_level) { #endif } +int dlopen_compress_journal(Compression c, int log_level) { + switch (c) { + case COMPRESSION_NONE: + return 0; + case COMPRESSION_XZ: + return dlopen_xz(log_level); + case COMPRESSION_LZ4: + return dlopen_lz4(log_level); + case COMPRESSION_ZSTD: + return dlopen_zstd(log_level); + default: + return -EOPNOTSUPP; + } +} + +int dlopen_compress(Compression c, int log_level) { + switch (c) { + case COMPRESSION_GZIP: + return dlopen_zlib(log_level); + case COMPRESSION_BZIP2: + return dlopen_bzip2(log_level); + default: + return dlopen_compress_journal(c, log_level); + } +} + static int compress_blob_xz( const void *src, uint64_t src_size, diff --git a/src/basic/compress.h b/src/basic/compress.h index f46b787f0c..e20713a8b7 100644 --- a/src/basic/compress.h +++ b/src/basic/compress.h @@ -102,6 +102,12 @@ int dlopen_zstd(int log_level) _dlopen_loader_; int dlopen_zlib(int log_level) _dlopen_loader_; int dlopen_bzip2(int log_level) _dlopen_loader_; +int dlopen_compress(Compression c, int log_level); +int dlopen_compress_journal(Compression c, int log_level); +static inline int dlopen_compress_default(int log_level) { + return dlopen_compress_journal(DEFAULT_COMPRESSION, log_level); +} + static inline const char* default_compression_extension(void) { return compression_extension_to_string(DEFAULT_COMPRESSION) ?: ""; } diff --git a/test/test-dlopen-note.py b/test/test-dlopen-note.py index 295a0bc69c..5cb995eed7 100755 --- a/test/test-dlopen-note.py +++ b/test/test-dlopen-note.py @@ -33,6 +33,9 @@ except ImportError: # Function filter: Maps wrapper/sentinel symbols to real symbols or an empty list (ignore). FUNCTION_FILTER = { # Filtered out (internal helpers, verbose loggers, sentinels) + 'dlopen_compress': [], + 'dlopen_compress_journal': [], + 'dlopen_compress_default': [], 'dlopen_safe': [], 'dlopen_verbose': [], 'dlopen_many_sym_or_warn_sentinel': [],