diff options
Diffstat (limited to 'lib/io/xfrm.c')
-rw-r--r-- | lib/io/xfrm.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/io/xfrm.c b/lib/io/xfrm.c new file mode 100644 index 0000000..22fd953 --- /dev/null +++ b/lib/io/xfrm.c @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * compressor.c + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#include "internal.h" + +int io_compressor_id_from_name(const char *name) +{ + if (strcmp(name, "gzip") == 0) + return IO_COMPRESSOR_GZIP; + + if (strcmp(name, "xz") == 0) + return IO_COMPRESSOR_XZ; + + if (strcmp(name, "zstd") == 0) + return IO_COMPRESSOR_ZSTD; + + if (strcmp(name, "bzip2") == 0) + return IO_COMPRESSOR_BZIP2; + + return -1; +} + +const char *io_compressor_name_from_id(int id) +{ + if (id == IO_COMPRESSOR_GZIP) + return "gzip"; + + if (id == IO_COMPRESSOR_XZ) + return "xz"; + + if (id == IO_COMPRESSOR_ZSTD) + return "zstd"; + + if (id == IO_COMPRESSOR_BZIP2) + return "bzip2"; + + return NULL; +} + +bool io_compressor_exists(int id) +{ + switch (id) { +#ifdef WITH_GZIP + case IO_COMPRESSOR_GZIP: + return true; +#endif +#ifdef WITH_XZ + case IO_COMPRESSOR_XZ: + return true; +#endif +#if defined(WITH_ZSTD) && defined(HAVE_ZSTD_STREAM) + case IO_COMPRESSOR_ZSTD: + return true; +#endif +#ifdef WITH_BZIP2 + case IO_COMPRESSOR_BZIP2: + return true; +#endif + default: + break; + } + + return false; +} |