URI: 
       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);
       +}