return c;
}
+bool compression_supported_journal(Compression c) {
+ static const unsigned supported =
+ (1U << COMPRESSION_NONE) |
+ (1U << COMPRESSION_XZ) * HAVE_XZ |
+ (1U << COMPRESSION_LZ4) * HAVE_LZ4 |
+ (1U << COMPRESSION_ZSTD) * HAVE_ZSTD;
+
+ assert(c >= 0);
+ assert(c < _COMPRESSION_MAX);
+
+ return BIT_SET(supported, c);
+}
+
bool compression_supported(Compression c) {
static const unsigned supported =
(1U << COMPRESSION_NONE) |
#endif
}
-int compress_blob(
+int compress_blob_journal(
Compression compression,
const void *src, uint64_t src_size,
void *dst, size_t dst_alloc_size, size_t *dst_size, int level) {
return compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size, level);
case COMPRESSION_ZSTD:
return compress_blob_zstd(src, src_size, dst, dst_alloc_size, dst_size, level);
+ default:
+ return -EOPNOTSUPP;
+ }
+}
+
+int compress_blob(
+ Compression compression,
+ const void *src, uint64_t src_size,
+ void *dst, size_t dst_alloc_size, size_t *dst_size, int level) {
+
+ switch (compression) {
case COMPRESSION_GZIP:
return compress_blob_gzip(src, src_size, dst, dst_alloc_size, dst_size, level);
case COMPRESSION_BZIP2:
return compress_blob_bzip2(src, src_size, dst, dst_alloc_size, dst_size, level);
default:
- return -EOPNOTSUPP;
+ return compress_blob_journal(compression, src, src_size, dst, dst_alloc_size, dst_size, level);
}
}
#endif
}
-int decompress_blob(
+int decompress_blob_journal(
Compression compression,
const void *src,
uint64_t src_size,
return decompress_blob_zstd(
src, src_size,
dst, dst_size, dst_max);
+ default:
+ return -EPROTONOSUPPORT;
+ }
+}
+
+int decompress_blob(
+ Compression compression,
+ const void *src,
+ uint64_t src_size,
+ void **dst,
+ size_t *dst_size,
+ size_t dst_max) {
+
+ switch (compression) {
case COMPRESSION_GZIP:
return decompress_blob_gzip(
src, src_size,
src, src_size,
dst, dst_size, dst_max);
default:
- return -EPROTONOSUPPORT;
+ return decompress_blob_journal(
+ compression,
+ src, src_size,
+ dst, dst_size, dst_max);
}
}
#endif
}
-int decompress_startswith(
+int decompress_startswith_journal(
Compression compression,
const void *src, uint64_t src_size,
void **buffer,
return decompress_startswith_lz4(src, src_size, buffer, prefix, prefix_len, extra);
case COMPRESSION_ZSTD:
return decompress_startswith_zstd(src, src_size, buffer, prefix, prefix_len, extra);
+ default:
+ return -EOPNOTSUPP;
+ }
+}
+
+int decompress_startswith(
+ Compression compression,
+ const void *src, uint64_t src_size,
+ void **buffer,
+ const void *prefix, size_t prefix_len,
+ uint8_t extra) {
+
+ switch (compression) {
case COMPRESSION_GZIP:
return decompress_startswith_gzip(src, src_size, buffer, prefix, prefix_len, extra);
case COMPRESSION_BZIP2:
return decompress_startswith_bzip2(src, src_size, buffer, prefix, prefix_len, extra);
default:
- return -EOPNOTSUPP;
+ return decompress_startswith_journal(compression, src, src_size, buffer, prefix, prefix_len, extra);
}
}
* filename does not carry a recognized compression suffix. */
Compression compression_from_filename(const char *filename);
+bool compression_supported_journal(Compression c);
bool compression_supported(Compression c);
/* Buffer size used by streaming compression APIs and pipeline stages that feed into them. Sized to
/* Blob compression/decompression */
+int compress_blob_journal(
+ Compression compression,
+ const void *src, uint64_t src_size,
+ void *dst, size_t dst_alloc_size, size_t *dst_size, int level);
int compress_blob(Compression compression,
const void *src, uint64_t src_size,
void *dst, size_t dst_alloc_size, size_t *dst_size, int level);
+int decompress_blob_journal(
+ Compression compression,
+ const void *src, uint64_t src_size,
+ void **dst, size_t *dst_size, size_t dst_max);
int decompress_blob(Compression compression,
const void *src, uint64_t src_size,
void **dst, size_t *dst_size, size_t dst_max);
int decompress_zlib_raw(const void *src, uint64_t src_size,
void *dst, size_t dst_size, int wbits);
+int decompress_startswith_journal(
+ Compression compression,
+ const void *src, uint64_t src_size,
+ void **buffer,
+ const void *prefix, size_t prefix_len,
+ uint8_t extra);
int decompress_startswith(Compression compression,
const void *src, uint64_t src_size,
void **buffer,
LIBZSTD_NOTE(priority)
#define COMPRESS_DEFAULT_NOTE \
+ COMPRESS_JOURNAL_NOTE; \
LIBBZ2_NOTE(suggested); \
+ LIBZ_NOTE(suggested)
+
+#define COMPRESS_JOURNAL_NOTE \
LIBLZ4_NOTE(COMPRESSION_PRIORITY_LZ4); \
LIBLZMA_NOTE(COMPRESSION_PRIORITY_XZ); \
- LIBZ_NOTE(suggested); \
LIBZSTD_NOTE(COMPRESSION_PRIORITY_ZSTD)
MHD_USE_THREAD_PER_CONNECTION;
int r, n;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBGNUTLS_NOTE(suggested);
log_setup();
_cleanup_free_ char *message = NULL;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBQRENCODE_NOTE(suggested);
log_setup();
_cleanup_strv_free_ char **args = NULL;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBACL_NOTE(recommended);
LIBBLKID_NOTE(recommended);
LIBCRYPTSETUP_NOTE(suggested);
LogTarget log_target;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBACL_NOTE(recommended);
LIBCRYPTO_NOTE(suggested);
LIBPCRE2_NOTE(suggested);
return DEFAULT_COMPRESSION;
}
- if (!compression_supported(c)) {
+ if (!compression_supported_journal(c)) {
log_debug("Unsupported compression algorithm specified, ignoring: %s", e);
return DEFAULT_COMPRESSION;
}
return 0;
}
- r = compress_blob(c, src, size, dst, size - 1, rsize, /* level= */ -1);
+ r = compress_blob_journal(c, src, size, dst, size - 1, rsize, /* level= */ -1);
if (r < 0)
return log_debug_errno(r, "Failed to compress data object using %s, ignoring: %m", compression_to_string(c));
int r;
if (field) {
- r = decompress_startswith(compression, payload, size, &f->compress_buffer, field,
+ r = decompress_startswith_journal(compression, payload, size, &f->compress_buffer, field,
field_length, '=');
if (r < 0)
return log_debug_errno(r,
return 1;
}
- r = decompress_blob(compression, payload, size, &f->compress_buffer, &rsize, DATA_SIZE_MAX);
+ r = decompress_blob_journal(compression, payload, size, &f->compress_buffer, &rsize, DATA_SIZE_MAX);
if (r < 0)
return r;
_cleanup_free_ void *b = NULL;
size_t b_size;
- r = decompress_blob(c, src, size, &b, &b_size, DATA_SIZE_MAX);
+ r = decompress_blob_journal(c, src, size, &b, &b_size, DATA_SIZE_MAX);
if (r < 0) {
error_errno(offset, r, "%s decompression failed: %m",
compression_to_string(c));
char **args = NULL;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
setlocale(LC_ALL, "");
log_setup();
_cleanup_strv_free_ char **args = NULL;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBSELINUX_NOTE(recommended);
setlocale(LC_ALL, "");
char **args = NULL;
int r;
- COMPRESS_DEFAULT_NOTE;
+ COMPRESS_JOURNAL_NOTE;
LIBSELINUX_NOTE(recommended);
log_setup();