Add functions to list supported hashes/compressors - dedup - deduplicating backup program HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 0b8ebd8c3ba33a27f9d04d031eeedf979c4a83bb DIR parent c764e111ff91c26bed375f5cf2484221d0144c78 HTML Author: sin <sin@2f30.org> Date: Wed, 17 Apr 2019 15:16:13 +0100 Add functions to list supported hashes/compressors Diffstat: M compress.c | 10 ++++++++++ M dedup.c | 8 ++++++++ M dedup.h | 2 ++ M hash.c | 10 ++++++++++ 4 files changed, 30 insertions(+), 0 deletions(-) --- DIR diff --git a/compress.c b/compress.c @@ -2,6 +2,7 @@ #include <err.h> #include <stdint.h> +#include <stdio.h> #include <string.h> #include <strings.h> @@ -111,3 +112,12 @@ compr_type2name(int type) return NULL; return algo->name; } + +void +compr_list(int fd) +{ + struct algomap *algo; + + for (algo = &algomap[0]; algo->name != NULL; algo++) + dprintf(fd, "%s\n", algo->name); +} DIR diff --git a/dedup.c b/dedup.c @@ -594,12 +594,20 @@ main(int argc, char *argv[]) ARGBEGIN { case 'H': hash_name = EARGF(usage()); + if (strcmp(hash_name, "?") == 0) { + hash_list(STDERR_FILENO); + return 0; + } hash_algo = hash_name2type(hash_name); if (hash_algo < 0) errx(1, "unknown hash: %s", hash_name); break; case 'Z': compr_name = EARGF(usage()); + if (strcmp(compr_name, "?") == 0) { + compr_list(STDERR_FILENO); + return 0; + } compr_algo = compr_name2type(compr_name); if (compr_algo < 0) errx(1, "unknown compressor: %s", compr_name); DIR diff --git a/dedup.h b/dedup.h @@ -145,6 +145,7 @@ size_t decompr(struct compr_ctx *ctx, const void *in, void *out, int compr_final(struct compr_ctx *ctx); int compr_name2type(char *name); char *compr_type2name(int type); +void compr_list(int fd); /* hash-blake2b.c */ int blake2bi(struct hash_ctx *ctx, size_t n); @@ -172,6 +173,7 @@ int hash_update(struct hash_ctx *ctx, const void *buf, size_t n); int hash_final(struct hash_ctx *ctx, void *buf, size_t n); int hash_name2type(char *name); char *hash_type2name(int type); +void hash_list(int fd); /* icache.c */ struct icache *alloc_icache(void); DIR diff --git a/hash.c b/hash.c @@ -1,6 +1,7 @@ #include <sys/types.h> #include <stdint.h> +#include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> @@ -93,3 +94,12 @@ hash_type2name(int type) return NULL; return algo->name; } + +void +hash_list(int fd) +{ + struct algomap *algo; + + for (algo = &algomap[0]; algo->name != NULL; algo++) + dprintf(fd, "%s\n", algo->name); +}