Add function for copying an index item (used to for mapping from an old
authorJonathan Dieter <jdieter@gmail.com>
Mon, 4 Jun 2018 07:43:54 +0000 (10:43 +0300)
committerJonathan Dieter <jdieter@gmail.com>
Mon, 4 Jun 2018 07:43:54 +0000 (10:43 +0300)
zchunk to a new)

Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
src/lib/index/index_common.c

index 0484cd9620adf63255e3d9728150ebe21c4c32c9..30b9e9f663dafbb3d556d95e00ae96f319e86bad 100644 (file)
@@ -93,3 +93,26 @@ void zck_index_free(zckCtx *zck) {
         zck->header_digest = NULL;
     }
 }
+
+zckIndexItem *copy_index_item(zckIndexItem *src) {
+    zckIndexItem *dst = zmalloc(sizeof(zckIndexItem));
+    if(dst == NULL) {
+        zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
+                sizeof(zckIndexItem));
+        return NULL;
+    }
+    dst->digest = zmalloc(src->digest_size);
+    if(dst->digest == NULL) {
+        free(dst);
+        zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
+                src->digest_size);
+        return NULL;
+    }
+    memcpy(dst->digest, src->digest, src->digest_size);
+    dst->digest_size = src->digest_size;
+    dst->valid = src->valid;
+    dst->start = src->start;
+    dst->comp_length = src->comp_length;
+    dst->length = src->length;
+    return dst;
+}