diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-03-04 18:53:37 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-03-05 00:59:37 +0100 |
commit | 3e2cda698f05d7290a8b9444d2c7d5c2599b2a27 (patch) | |
tree | fcb78406b6fdf2745f09fe4d606cb291deba2dfe /src/import/import-compress.h | |
parent | dc2c282b6aac820a3c27d8a7a68c0386300db663 (diff) |
import: split out compression logic, so that we can share it with between import and pull calls
Diffstat (limited to 'src/import/import-compress.h')
-rw-r--r-- | src/import/import-compress.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/import/import-compress.h b/src/import/import-compress.h new file mode 100644 index 0000000000..4f97f20b45 --- /dev/null +++ b/src/import/import-compress.h @@ -0,0 +1,61 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2015 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <sys/types.h> + +#include <lzma.h> +#include <zlib.h> +#include <bzlib.h> + +#include "macro.h" + +typedef enum ImportCompressType { + IMPORT_COMPRESS_UNKNOWN, + IMPORT_COMPRESS_UNCOMPRESSED, + IMPORT_COMPRESS_XZ, + IMPORT_COMPRESS_GZIP, + IMPORT_COMPRESS_BZIP2, + _IMPORT_COMPRESS_TYPE_MAX, + _IMPORT_COMPRESS_TYPE_INVALID = -1, +} ImportCompressType; + +typedef struct ImportCompress { + ImportCompressType type; + + union { + lzma_stream xz; + z_stream gzip; + bz_stream bzip2; + }; +} ImportCompress; + +typedef int (*ImportCompressCallback)(const void *data, size_t size, void *userdata); + +void import_compress_free(ImportCompress *c); + +int import_uncompress_detect(ImportCompress *c, const void *data, size_t size); + +int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCompressCallback callback, void *userdata); + +const char* import_compress_type_to_string(ImportCompressType t) _const_; +ImportCompressType import_compress_type_from_string(const char *s) _pure_; |