icompress: Use a switch instead of an if/elseif construct - dedup - deduplicating backup program Err bitreich.org 70
hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70
1Log /scm/dedup/log.gph bitreich.org 70
1Files /scm/dedup/files.gph bitreich.org 70
1Refs /scm/dedup/refs.gph bitreich.org 70
1Tags /scm/dedup/tag bitreich.org 70
1README /scm/dedup/file/README.gph bitreich.org 70
1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit e401f4cd871cf10bbcaf31eee682c3ae34454b5d /scm/dedup/commit/e401f4cd871cf10bbcaf31eee682c3ae34454b5d.gph bitreich.org 70
1parent 481193d0d350c006ac751b4d36eb3a27baafb0a0 /scm/dedup/commit/481193d0d350c006ac751b4d36eb3a27baafb0a0.gph bitreich.org 70
hAuthor: sin <sin@2f30.org> URL:mailto:sin@2f30.org bitreich.org 70
iDate: Thu, 16 May 2019 13:51:28 +0300 Err bitreich.org 70
i Err bitreich.org 70
icompress: Use a switch instead of an if/elseif construct Err bitreich.org 70
i Err bitreich.org 70
iDo not check for invalid compression type in put()/get() as this is Err bitreich.org 70
ialready checked in creat()/open(). Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M bcompress.c | 47 +++++++++++++++---------------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 23 insertions(+), 24 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/bcompress.c b/bcompress.c /scm/dedup/file/bcompress.c.gph bitreich.org 70
i@@ -163,18 +163,20 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i struct cd cd; Err bitreich.org 70
i char *cbuf; Err bitreich.org 70
i size_t cn; Err bitreich.org 70
i+ int r; Err bitreich.org 70
i Err bitreich.org 70
i /* Calculate compressed block size */ Err bitreich.org 70
i cctx = bctx->cctx; Err bitreich.org 70
i- if (cctx->type == CDNONETYPE) { Err bitreich.org 70
i+ switch (cctx->type) { Err bitreich.org 70
i+ case CDNONETYPE: Err bitreich.org 70
i cn = n; Err bitreich.org 70
i- } else if (cctx->type == CDSNAPPYTYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDSNAPPYTYPE: Err bitreich.org 70
i cn = snappy_max_compressed_length(n); Err bitreich.org 70
i- } else if (cctx->type == CDLZ4TYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDLZ4TYPE: Err bitreich.org 70
i cn = LZ4_compressBound(n); Err bitreich.org 70
i- } else { Err bitreich.org 70
i- seterr("invalid compression type: %d", cctx->type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i cbuf = malloc(CDSIZE + cn); Err bitreich.org 70
i@@ -184,17 +186,18 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Compress block */ Err bitreich.org 70
i- if (cctx->type == CDNONETYPE) { Err bitreich.org 70
i+ switch (cctx->type) { Err bitreich.org 70
i+ case CDNONETYPE: Err bitreich.org 70
i memcpy(&cbuf[CDSIZE], buf, cn); Err bitreich.org 70
i- } else if (cctx->type == CDSNAPPYTYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDSNAPPYTYPE: Err bitreich.org 70
i if (snappy_compress(buf, n, &cbuf[CDSIZE], &cn) != SNAPPY_OK) { Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
i seterr("snappy_compress: failed"); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i- } else if (cctx->type == CDLZ4TYPE) { Err bitreich.org 70
i- int r; Err bitreich.org 70
i- Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDLZ4TYPE: Err bitreich.org 70
i r = LZ4_compress_default(buf, &cbuf[CDSIZE], n, cn); Err bitreich.org 70
i if (r < 0) { Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
i@@ -202,10 +205,7 @@ bcput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i cn = r; Err bitreich.org 70
i- } else { Err bitreich.org 70
i- free(cbuf); Err bitreich.org 70
i- seterr("invalid compression type: %d", cctx->type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Prepend compression descriptor */ Err bitreich.org 70
i@@ -229,6 +229,7 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i struct cd cd; Err bitreich.org 70
i char *cbuf; Err bitreich.org 70
i size_t cn, un, size; Err bitreich.org 70
i+ int r; Err bitreich.org 70
i Err bitreich.org 70
i /* Calculate maximum compressed block size */ Err bitreich.org 70
i size = *n; Err bitreich.org 70
i@@ -254,7 +255,8 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i unpackcd(cbuf, &cd); Err bitreich.org 70
i Err bitreich.org 70
i /* Decompress block */ Err bitreich.org 70
i- if (cd.type == CDNONETYPE) { Err bitreich.org 70
i+ switch (cd.type) { Err bitreich.org 70
i+ case CDNONETYPE: Err bitreich.org 70
i un = cd.size; Err bitreich.org 70
i if (*n < un) { Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
i@@ -262,7 +264,8 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i memcpy(buf, &cbuf[CDSIZE], un); Err bitreich.org 70
i- } else if (cd.type == CDSNAPPYTYPE) { Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDSNAPPYTYPE: Err bitreich.org 70
i if (snappy_uncompressed_length(&cbuf[CDSIZE], cd.size, Err bitreich.org 70
i &un) != SNAPPY_OK) { Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
i@@ -282,9 +285,8 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i seterr("snappy_uncompress: failed"); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i- } else if (cd.type == CDLZ4TYPE) { Err bitreich.org 70
i- int r; Err bitreich.org 70
i- Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case CDLZ4TYPE: Err bitreich.org 70
i r = LZ4_decompress_safe(&cbuf[CDSIZE], buf, cd.size, *n); Err bitreich.org 70
i if (r < 0) { Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
i@@ -292,10 +294,7 @@ bcget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i un = r; Err bitreich.org 70
i- } else { Err bitreich.org 70
i- free(cbuf); Err bitreich.org 70
i- seterr("invalid compression type: %d", cd.type); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i+ break; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i free(cbuf); Err bitreich.org 70
.
Response:
text/plain