From: Yu Watanabe Date: Tue, 4 Apr 2023 05:34:32 +0000 (+0900) Subject: compress: introduce compression_supported() helper function X-Git-Tag: v254-rc1~792^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83f3d73da8d132773dd91aae0fa7babb74920774;p=thirdparty%2Fsystemd.git compress: introduce compression_supported() helper function --- diff --git a/src/basic/compress.c b/src/basic/compress.c index 0a330ecb551..59621dc05ba 100644 --- a/src/basic/compress.c +++ b/src/basic/compress.c @@ -65,6 +65,16 @@ static const char* const compression_table[_COMPRESSION_MAX] = { DEFINE_STRING_TABLE_LOOKUP(compression, Compression); +bool compression_supported(Compression c) { + static const unsigned supported = + (1U << COMPRESSION_NONE) | + (1U << COMPRESSION_XZ) * HAVE_XZ | + (1U << COMPRESSION_LZ4) * HAVE_LZ4 | + (1U << COMPRESSION_ZSTD) * HAVE_ZSTD; + + return c >= 0 && c < _COMPRESSION_MAX && FLAGS_SET(supported, 1U << c); +} + int compress_blob_xz(const void *src, uint64_t src_size, void *dst, size_t dst_alloc_size, size_t *dst_size) { #if HAVE_XZ diff --git a/src/basic/compress.h b/src/basic/compress.h index 583b105c66f..2201bca74ca 100644 --- a/src/basic/compress.h +++ b/src/basic/compress.h @@ -2,6 +2,7 @@ #pragma once #include +#include #include #include @@ -17,6 +18,8 @@ typedef enum Compression { const char* compression_to_string(Compression compression); Compression compression_from_string(const char *compression); +bool compression_supported(Compression c); + int compress_blob_xz(const void *src, uint64_t src_size, void *dst, size_t dst_alloc_size, size_t *dst_size); int compress_blob_lz4(const void *src, uint64_t src_size,