More work on buzhash integration in library
authorJonathan Dieter <jdieter@gmail.com>
Wed, 11 Jul 2018 10:24:58 +0000 (11:24 +0100)
committerJonathan Dieter <jdieter@gmail.com>
Wed, 11 Jul 2018 10:24:58 +0000 (11:24 +0100)
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
include/zck.h.in
src/lib/zck.c
src/lib/zck_private.h

index 35847c1a4f07ec30d4f7ce21edafb354673e07ce..59a3f2cc5afef270f007eacfabac324ea1be614f 100644 (file)
@@ -25,6 +25,7 @@ typedef enum zck_ioption {
     ZCK_HASH_CHUNK_TYPE,        /* Set chunk hash type using zck_hash */
     ZCK_VAL_HEADER_HASH_TYPE,   /* Set what the header hash type *should* be */
     ZCK_VAL_HEADER_LENGTH,      /* Set what the header length *should* be */
+    ZCK_MANUAL_CHUNK,           /* Disable auto-chunking */
     ZCK_COMP_TYPE = 100,        /* Set compression type using zck_comp */
     ZCK_ZSTD_COMP_LEVEL = 1000  /* Set zstd compression level */
 } zck_ioption;
index 09a356d182cedff254fc1e54f76df9b31fc32b7c..2a99e070ebdfd79fef6fb9cf3e927a229c4d798b 100644 (file)
@@ -272,6 +272,15 @@ int PUBLIC zck_set_ioption(zckCtx *zck, zck_ioption option, ssize_t value) {
             return False;
         }
         zck->prep_hdr_size = value;
+    } else if(option == ZCK_MANUAL_CHUNK) {
+        VALIDATE_WRITE(zck);
+        if(value != 0) {
+            zck_log(ZCK_LOG_DEBUG, "Disabling automatic chunking\n");
+            zck->manual_chunk = 1;
+        } else {
+            zck_log(ZCK_LOG_DEBUG, "Enabling automatic chunking\n");
+            zck->manual_chunk = 0;
+        }
 
     /* Hash options */
     } else if(option < 100) {
index 61b6a6ce1dec6d67d553b82acd6805156ad087d2..c68c5051de66e61a600c03cd1ea712746dd948dc 100644 (file)
@@ -210,6 +210,7 @@ typedef struct zckCtx {
 
     int buzhash_width;
     int buzhash_match_bits;
+    int manual_chunk;
 } zckCtx;
 
 int get_tmp_fd()