No need for a temporary bops pointer - dedup - deduplicating backup program
 (HTM) git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 42797a877f6efb89a46968af77fe8ab9c0e335fa
 (DIR) parent 921f7817b6057ac6d1efd12165e1593b0accfc4e
 (HTM) Author: sin <sin@2f30.org>
       Date:   Sun,  5 May 2019 21:25:16 +0100
       
       No need for a temporary bops pointer
       
       Diffstat:
         M bcompress.c                         |      38 ++++++++-----------------------
         M bencrypt.c                          |      40 +++++++++----------------------
       
       2 files changed, 21 insertions(+), 57 deletions(-)
       ---
 (DIR) diff --git a/bcompress.c b/bcompress.c
       @@ -93,7 +93,6 @@ static int
        bccreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar)
        {
                struct cctx *cctx;
       -        struct bops *bops;
                int type;
        
                if (strcasecmp(bpar->calgo, "none") == 0) {
       @@ -115,8 +114,7 @@ bccreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar)
                cctx = bctx->cctx;
                cctx->type = type;
        
       -        bops = bencryptops();
       -        if (bops->creat(bctx, path, mode, bpar) < 0) {
       +        if (bencryptops()->creat(bctx, path, mode, bpar) < 0) {
                        free(cctx);
                        return -1;
                }
       @@ -127,7 +125,6 @@ static int
        bcopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
        {
                struct cctx *cctx;
       -        struct bops *bops;
        
                bctx->cctx = calloc(1, sizeof(struct cctx));
                if (bctx->cctx == NULL) {
       @@ -136,8 +133,7 @@ bcopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
                }
                cctx = bctx->cctx;
        
       -        bops = bencryptops();
       -        if (bops->open(bctx, path, flags, mode, bpar) < 0) {
       +        if (bencryptops()->open(bctx, path, flags, mode, bpar) < 0) {
                        free(cctx);
                        return -1;
                }
       @@ -149,7 +145,7 @@ bcopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
                } else if (strcasecmp(bpar->calgo, "lz4") == 0) {
                        cctx->type = CDLZ4TYPE;
                } else {
       -                bops->close(bctx);
       +                bencryptops()->close(bctx);
                        free(cctx);
                        bseterr("invalid compression type: %s", bpar->calgo);
                        return -1;
       @@ -161,7 +157,6 @@ static int
        bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
        {
                struct cctx *cctx;
       -        struct bops *bops;
                struct cd cd;
                char *cbuf;
                size_t cn;
       @@ -215,8 +210,7 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
                cd.size = cn;
                packcd(cbuf, &cd);
        
       -        bops = bencryptops();
       -        if (bops->put(bctx, cbuf, CDSIZE + cn, md) < 0) {
       +        if (bencryptops()->put(bctx, cbuf, CDSIZE + cn, md) < 0) {
                        free(cbuf);
                        return -1;
                }
       @@ -228,7 +222,6 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
        static int
        bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
        {
       -        struct bops *bops;
                struct cd cd;
                char *cbuf;
                size_t cn, un, size;
       @@ -249,8 +242,7 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
                        return -1;
                }
        
       -        bops = bencryptops();
       -        if (bops->get(bctx, md, cbuf, &size) < 0) {
       +        if (bencryptops()->get(bctx, md, cbuf, &size) < 0) {
                        free(cbuf);
                        return -1;
                }
       @@ -310,45 +302,35 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
        static int
        bcrm(struct bctx *bctx, unsigned char *md)
        {
       -        struct bops *bops = bencryptops();
       -
       -        return bops->rm(bctx, md);
       +        return bencryptops()->rm(bctx, md);
        }
        
        static int
        bcgc(struct bctx *bctx)
        {
       -        struct bops *bops = bencryptops();
       -
       -        return bops->gc(bctx);
       +        return bencryptops()->gc(bctx);
        }
        
        static int
        bccheck(struct bctx *bctx, unsigned char *md)
        {
       -        struct bops *bops = bencryptops();
       -
       -        return bops->check(bctx, md);
       +        return bencryptops()->check(bctx, md);
        
        }
        
        static int
        bcsync(struct bctx *bctx)
        {
       -        struct bops *bops = bencryptops();
       -
       -        return bops->sync(bctx);
       +        return bencryptops()->sync(bctx);
        }
        
        static int
        bcclose(struct bctx *bctx)
        {
                struct cctx *cctx = bctx->cctx;
       -        struct bops *bops;
        
                free(cctx);
       -        bops = bencryptops();
       -        return bops->close(bctx);
       +        return bencryptops()->close(bctx);
        }
        
        struct bops *
 (DIR) diff --git a/bencrypt.c b/bencrypt.c
       @@ -96,7 +96,6 @@ static int
        becreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar)
        {
                struct ectx *ectx;
       -        struct bops *bops;
                int type;
        
                /* Determine algorithm type */
       @@ -130,8 +129,7 @@ becreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar)
                if (bpar->key != NULL)
                        memcpy(ectx->key, bpar->key, KEYSIZE);
        
       -        bops = bstorageops();
       -        if (bops->creat(bctx, path, mode, bpar) < 0) {
       +        if (bstorageops()->creat(bctx, path, mode, bpar) < 0) {
                        free(ectx);
                        return -1;
                }
       @@ -142,7 +140,6 @@ static int
        beopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
        {
                struct ectx *ectx;
       -        struct bops *bops;
        
                bctx->ectx = calloc(1, sizeof(struct ectx));
                if (bctx->ectx == NULL) {
       @@ -153,8 +150,7 @@ beopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
                if (bpar->key != NULL)
                        memcpy(ectx->key, bpar->key, KEYSIZE);
        
       -        bops = bstorageops();
       -        if (bops->open(bctx, path, flags, mode, bpar) < 0) {
       +        if (bstorageops()->open(bctx, path, flags, mode, bpar) < 0) {
                        free(ectx);
                        return -1;
                }
       @@ -165,7 +161,7 @@ beopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
                else if (strcasecmp(bpar->ealgo, "XChaCha20-Poly1305") == 0)
                        ectx->type = EDCHACHATYPE;
                else {
       -                bops->close(bctx);
       +                bstorageops()->close(bctx);
                        free(ectx);
                        bseterr("invalid encryption type: %s", bpar->ealgo);
                        return -1;
       @@ -173,7 +169,7 @@ beopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar)
        
                /* Ensure that if repo is encrypted, a key was provided */
                if (ectx->type != EDNONETYPE && bpar->key == NULL) {
       -                bops->close(bctx);
       +                bstorageops()->close(bctx);
                        free(ectx);
                        bseterr("expected encryption key");
                        return -1;
       @@ -186,7 +182,6 @@ static int
        beput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
        {
                struct ectx *ectx;
       -        struct bops *bops;
                struct ed ed;
                unsigned char *ebuf;
                size_t en;
       @@ -239,8 +234,7 @@ beput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
                        return -1;
                }
        
       -        bops = bstorageops();
       -        if (bops->put(bctx, ebuf, EDSIZE + en, md) < 0) {
       +        if (bstorageops()->put(bctx, ebuf, EDSIZE + en, md) < 0) {
                        free(ebuf);
                        return -1;
                }
       @@ -252,7 +246,6 @@ beput(struct bctx *bctx, void *buf, size_t n, unsigned char *md)
        static int
        beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
        {
       -        struct bops *bops;
                struct ed ed;
                unsigned char *ebuf;
                size_t dn, size;
       @@ -266,8 +259,7 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
                        return -1;
                }
        
       -        bops = bstorageops();
       -        if (bops->get(bctx, md, ebuf, &size) < 0) {
       +        if (bstorageops()->get(bctx, md, ebuf, &size) < 0) {
                        free(ebuf);
                        return -1;
                }
       @@ -320,45 +312,35 @@ beget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
        static int
        berm(struct bctx *bctx, unsigned char *md)
        {
       -        struct bops *bops = bstorageops();
       -
       -        return bops->rm(bctx, md);
       +        return bstorageops()->rm(bctx, md);
        }
        
        static int
        begc(struct bctx *bctx)
        {
       -        struct bops *bops = bstorageops();
       -
       -        return bops->gc(bctx);
       +        return bstorageops()->gc(bctx);
        }
        
        static int
        becheck(struct bctx *bctx, unsigned char *md)
        {
       -        struct bops *bops = bstorageops();
       -
       -        return bops->check(bctx, md);
       +        return bstorageops()->check(bctx, md);
        
        }
        
        static int
        besync(struct bctx *bctx)
        {
       -        struct bops *bops = bstorageops();
       -
       -        return bops->sync(bctx);
       +        return bstorageops()->sync(bctx);
        }
        
        static int
        beclose(struct bctx *bctx)
        {
                struct ectx *ectx = bctx->ectx;
       -        struct bops *bops;
        
                free(ectx);
       -        bops = bstorageops();
       -        return bops->close(bctx);
       +        return bstorageops()->close(bctx);
        }
        
        struct bops *