URI: 
       dinfo: Implement terse mode output - 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 6499f2d353ff8cc5cffeb336cee6c8dbf20679c2
   DIR parent 27bf6699242c15fb69fcb20f5afcf46665902fa5
  HTML Author: sin <sin@2f30.org>
       Date:   Thu, 18 Apr 2019 11:36:14 +0100
       
       dinfo: Implement terse mode output
       
       Diffstat:
         M dinfo.1                             |      16 ++++++++++++++--
         M dinfo.c                             |      67 +++++++++++++++++++------------
       
       2 files changed, 56 insertions(+), 27 deletions(-)
       ---
   DIR diff --git a/dinfo.1 b/dinfo.1
       @@ -1,4 +1,4 @@
       -.Dd April 17, 2019
       +.Dd April 18, 2019
        .Dt DINFO 1
        .Os
        .Sh NAME
       @@ -6,7 +6,7 @@
        .Nd Print information about a dedup repository
        .Sh SYNOPSIS
        .Nm dinfo
       -.Op Fl v
       +.Op Fl tv
        .Op repo
        .Sh DESCRIPTION
        .Nm
       @@ -17,6 +17,18 @@ is specified, then the current directory
        is assumed to be the repository.
        .Sh OPTIONS
        .Bl -tag -width "-v"
       +.It Fl t
       +Enable terse mode.
       +The output fields are as follows:
       +.br
       +[original dataset size]
       +[compressed dataset size]
       +[deduplicated dataset size]
       +[deduplication ratio]
       +[min block size]
       +[average block size]
       +[max block size]
       +[number of unique blocks]
        .It Fl v
        Enable verbose mode.
        .El
   DIR diff --git a/dinfo.c b/dinfo.c
       @@ -25,32 +25,45 @@ int verbose;
        char *argv0;
        
        static void
       -print_info(void)
       +print_info(int tflag)
        {
                struct stats *st = &snap_hdr.st;
        
       -        fprintf(stderr, "Compression algorithm: %s\n",
       -                compr_type2name(compr_algo));
       -        fprintf(stderr, "Hash algorithm: %s\n",
       -                hash_type2name(hash_algo));
       -
       -        if (st->nr_blks == 0)
       -                return;
       -
       -        fprintf(stderr, "Original size: %llu bytes\n",
       -                (unsigned long long)st->orig_size);
       -        fprintf(stderr, "Compressed size: %llu bytes\n",
       -                (unsigned long long)st->compr_size);
       -        fprintf(stderr, "Deduplicated size: %llu bytes\n",
       -                (unsigned long long)st->dedup_size);
       -        fprintf(stderr, "Deduplication ratio: %.2f\n",
       -                (double)st->orig_size / st->dedup_size);
       -        fprintf(stderr, "Min/avg/max block size: %llu/%llu/%llu bytes\n",
       -                (unsigned long long)st->min_blk_size,
       -                (unsigned long long)st->dedup_size / st->nr_blks,
       -                (unsigned long long)st->max_blk_size);
       -        fprintf(stderr, "Number of unique blocks: %llu\n",
       -                (unsigned long long)st->nr_blks);
       +        if (!tflag) {
       +                fprintf(stderr, "Compression algorithm: %s\n",
       +                        compr_type2name(compr_algo));
       +                fprintf(stderr, "Hash algorithm: %s\n",
       +                        hash_type2name(hash_algo));
       +
       +                if (st->nr_blks == 0)
       +                        return;
       +
       +                fprintf(stderr, "Original size: %llu bytes\n",
       +                        (unsigned long long)st->orig_size);
       +                fprintf(stderr, "Compressed size: %llu bytes\n",
       +                        (unsigned long long)st->compr_size);
       +                fprintf(stderr, "Deduplicated size: %llu bytes\n",
       +                        (unsigned long long)st->dedup_size);
       +                fprintf(stderr, "Deduplication ratio: %.2f\n",
       +                        (double)st->orig_size / st->dedup_size);
       +                fprintf(stderr, "Min/avg/max block size: %llu/%llu/%llu bytes\n",
       +                        (unsigned long long)st->min_blk_size,
       +                        (unsigned long long)st->dedup_size / st->nr_blks,
       +                        (unsigned long long)st->max_blk_size);
       +                fprintf(stderr, "Number of unique blocks: %llu\n",
       +                        (unsigned long long)st->nr_blks);
       +        } else {
       +                /* terse mode */
       +                fprintf(stderr, "%llu %llu %llu %.2f %llu %llu %llu %llu\n",
       +                        (unsigned long long)st->orig_size,
       +                        (unsigned long long)st->compr_size,
       +                        (unsigned long long)st->dedup_size,
       +                        (double)st->orig_size / st->dedup_size,
       +                        (unsigned long long)st->min_blk_size,
       +                        (unsigned long long)st->dedup_size / st->nr_blks,
       +                        (unsigned long long)st->max_blk_size,
       +                        (unsigned long long)st->nr_blks);
       +        }
        }
        
        static void
       @@ -84,7 +97,7 @@ term(void)
        static void
        usage(void)
        {
       -        fprintf(stderr, "usage: %s [-v] [repo]\n", argv0);
       +        fprintf(stderr, "usage: %s [-tv] [repo]\n", argv0);
                exit(1);
        }
        
       @@ -92,8 +105,12 @@ int
        main(int argc, char *argv[])
        {
                char *repo = NULL;
       +        int tflag = 0;
        
                ARGBEGIN {
       +        case 't':
       +                tflag = 1;
       +                break;
                case 'v':
                        verbose++;
                        break;
       @@ -116,7 +133,7 @@ main(int argc, char *argv[])
                        err(1, "chdir: %s", repo);
        
                init();
       -        print_info();
       +        print_info(tflag);
                term();
                return 0;
        }