dlog_logger_SOURCES = \
external/sd-daemon/sd-daemon.c \
external/fastlz/fastlz.c \
+ external/miniz/miniz.c \
src/logger/logger.c \
src/logger/logger_privileges.c \
src/logger/compression_fastlz.c \
+ src/logger/compression_miniz.c \
src/logger/dlogutil_line.c \
src/logger/fd_entity.c \
src/logger/log_buffer.c \
src_tests_test_logger_compressed_storage_SOURCES = src/tests/test_logger_compressed_storage.c \
src/logger/compression_fastlz.c \
+ src/logger/compression_miniz.c \
src/logger/log_compressed_storage.c \
src/shared/ptrs_list.c \
src/shared/queued_entry_timestamp.c \
+ external/miniz/miniz.c \
external/fastlz/fastlz.c
src_tests_test_logger_compressed_storage_CFLAGS = $(check_CFLAGS)
src_tests_test_logger_compressed_storage_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=malloc
size_t (*get_workspace_size)(size_t input_size);
};
+extern struct compression_algo miniz;
extern struct compression_algo fastlz;
--- /dev/null
+#include "log_compressed_storage.h"
+#include "miniz.h"
+
+static int miniz_compression(const char *in, size_t size_in, char *compressed, size_t compressed_capacity)
+{
+ mz_ulong size_out = compressed_capacity;
+ int r = mz_compress((unsigned char *)compressed, &size_out, (const unsigned char *)in, size_in);
+ return r == MZ_OK ? size_out : 0;
+}
+
+static int miniz_decompression(const char *compressed, size_t size_compressed, char *decompressed, size_t size_decompressed)
+{
+ mz_ulong size_decompressed_out = size_decompressed;
+ int r = mz_uncompress((unsigned char *)decompressed, &size_decompressed_out, (const unsigned char *)compressed, size_compressed);
+ return r == MZ_OK ? (size_t) size_decompressed_out : 0;
+}
+
+static bool miniz_is_legal_to_compress(char *data, size_t size)
+{
+ return true;
+}
+
+static size_t miniz_get_workspace_size(size_t input_size)
+{
+ return compressBound(input_size);
+}
+
+struct compression_algo miniz = {
+ .comp = miniz_compression,
+ .decomp = miniz_decompression,
+ .is_legal = miniz_is_legal_to_compress,
+ .get_workspace_size = miniz_get_workspace_size,
+};
+
*/
#include "log_compressed_storage.h"
#include "fastlz.h"
+#include "miniz.h"
#include <ptrs_list.h>
#include <stdlib.h>
if (!strcmp(algo_name, "fastlz"))
return &fastlz;
+ if (!strcmp(algo_name, "miniz"))
+ return &miniz;
return NULL;
}
*/
#include "../src/logger/log_compressed_storage.h"
#include "fastlz.h"
+#include "miniz.h"
#include "logcommon.h"
#include <stdio.h>
void test_dumping_oneshot()
{
static const size_t CNT = 100;
- log_compressed_storage *s1 = MAKE_STORAGE(5000);
+ log_compressed_storage *s1 = MAKE_STORAGE(7000); // just enough to fit (for easy flushing afterwards)
assert(s1);
log_compressed_storage_reader *r1 = log_compressed_storage_new_reader(s1, true, false, dont_call_this_callback, NULL);
assert(r1);
return fastlz_compress(good_compressible_input, sizeof good_compressible_input, buffer);
}
+static size_t get_good_size_miniz() {
+ mz_ulong out_size = compressBound(sizeof good_compressible_input);
+ unsigned char *const buffer = malloc(out_size);
+
+ mz_compress(buffer, &out_size, (const unsigned char *) good_compressible_input, sizeof good_compressible_input);
+ return out_size;
+}
+
int main(void)
{
srand(0);
size_t size;
} algos[] =
{ { .algo = "fastlz", .size = get_good_size_fastlz(), }
+ , { .algo = "miniz" , .size = get_good_size_miniz(), }
};
for (size_t i = 0; i < NELEMS(algos); ++i) {