if(zck->comp.compress(zck, &(zck->comp), src, src_size, &dst,
&dst_size, 1) < 0)
return -1;
+ zck->comp.dc_data_size += src_size;
+
if(dst_size > 0 && !write_data(zck, zck->temp_fd, dst, dst_size)) {
free(dst);
return -1;
if(zck->comp.compress(zck, comp, zck->comp.dict,
zck->comp.dict_size, &dst, &dst_size, 0) < 0)
return False;
+ zck->comp.dc_data_size = zck->comp.dict_size;
if(!write_data(zck, zck->temp_fd, dst, dst_size)) {
free(dst);
return False;
if(!zck->comp.end_cchunk(zck, comp, &dst, &dst_size, 0))
return False;
+ zck->comp.dc_data_size = 0;
if(!write_data(zck, zck->temp_fd, dst, dst_size)) {
free(dst);
return False;
const char *loc = src;
size_t loc_size = src_size;
size_t loc_written = 0;
- zck_log(ZCK_LOG_DDEBUG, "Size: %lu", zck->comp.dc_data_size + loc_size);
if(zck->manual_chunk) {
while(zck->comp.dc_data_size + loc_size > zck->chunk_max_size) {
size_t dst_size = 0;
if(!zck->comp.end_cchunk(zck, &(zck->comp), &dst, &dst_size, 1))
return -1;
+ zck->comp.dc_data_size = 0;
if(dst_size > 0 && !write_data(zck, zck->temp_fd, dst, dst_size)) {
free(dst);
return -1;
#include "zck_private.h"
static int init(zckCtx *zck, zckComp *comp) {
- return True;
-}
-
-static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
- int use_dict) {
- *dst = NULL;
- *dst_size = 0;
+ VALIDATE_BOOL(zck);
+ ALLOCD_BOOL(comp);
return True;
}
static ssize_t compress(zckCtx *zck, zckComp *comp, const char *src,
const size_t src_size, char **dst, size_t *dst_size,
int use_dict) {
+ VALIDATE_INT(zck);
+ ALLOCD_INT(comp);
+
*dst = zmalloc(src_size);
if(dst == NULL) {
set_fatal_error(zck, "Unable to allocate %lu bytes", src_size);
return *dst_size;
}
+static int end_cchunk(zckCtx *zck, zckComp *comp, char **dst, size_t *dst_size,
+ int use_dict) {
+ VALIDATE_BOOL(zck);
+ ALLOCD_BOOL(comp);
+
+ *dst = NULL;
+ *dst_size = 0;
+
+ return True;
+}
static int decompress(zckCtx *zck, zckComp *comp, const int use_dict) {
+ VALIDATE_BOOL(zck);
+ ALLOCD_BOOL(comp);
+
char *src = comp->data;
char src_size = comp->data_size;
comp->data = NULL;
memcpy(comp->dc_data + comp->dc_data_size, src, src_size);
*dst = NULL;
*dst_size = 0;
- comp->dc_data_size += src_size;
return 0;
}
}
free(comp->dc_data);
comp->dc_data = NULL;
- comp->dc_data_size = 0;
comp->dc_data_loc = 0;
if(ZSTD_isError(*dst_size)) {
set_fatal_error(zck, "zstd compression error: %s",