}
/* Free zckDL header regex used for downloading ranges */
-void clear_dl_regex(zckDL *dl) {
+static void clear_dl_regex(zckDL *dl) {
if(dl == NULL || dl->priv == NULL)
return;
}
/* Copy chunk identified by src_idx into location specified by tgt_idx */
-int write_and_verify_chunk(zckCtx *src, zckCtx *tgt, zckIndexItem *src_idx,
- zckIndexItem *tgt_idx) {
+static int write_and_verify_chunk(zckCtx *src, zckCtx *tgt,
+ zckIndexItem *src_idx,
+ zckIndexItem *tgt_idx) {
static char buf[BUF_SIZE] = {0};
size_t to_read = src_idx->comp_length;
#include "zck_private.h"
-void PUBLIC zck_range_free(zckRange **info) {
- zckRangeItem *next = (*info)->first;
- while(next) {
- zckRangeItem *tmp = next;
- next = next->next;
- free(tmp);
- }
- index_clean(&((*info)->index));
- free(*info);
- *info = NULL;
-}
-
-zckRangeItem *range_insert_new(zckRangeItem *prev, zckRangeItem *next, uint64_t start,
- uint64_t end, zckRange *info,
- zckIndexItem *idx, int add_index) {
+static zckRangeItem *range_insert_new(zckRangeItem *prev, zckRangeItem *next,
+ uint64_t start, uint64_t end,
+ zckRange *info, zckIndexItem *idx,
+ int add_index) {
zckRangeItem *new = zmalloc(sizeof(zckRangeItem));
if(!new) {
zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
return new;
}
-void range_remove(zckRangeItem *range) {
+static void range_remove(zckRangeItem *range) {
if(range->prev)
range->prev->next = range->next;
if(range->next)
free(range);
}
-void range_merge_combined(zckRange *info) {
+static void range_merge_combined(zckRange *info) {
if(!info) {
zck_log(ZCK_LOG_ERROR, "zckRange not allocated\n");
return;
}
}
-int range_add(zckRange *info, zckIndexItem *idx, zckCtx *zck) {
+static int range_add(zckRange *info, zckIndexItem *idx, zckCtx *zck) {
if(info == NULL || idx == NULL) {
zck_log(ZCK_LOG_ERROR, "zckRange or zckIndexItem not allocated\n");
return False;
return True;
}
+void PUBLIC zck_range_free(zckRange **info) {
+ zckRangeItem *next = (*info)->first;
+ while(next) {
+ zckRangeItem *tmp = next;
+ next = next->next;
+ free(tmp);
+ }
+ index_clean(&((*info)->index));
+ free(*info);
+ *info = NULL;
+}
+
char PUBLIC *zck_get_range_char(zckRange *range) {
int buf_size=BUF_SIZE;
char *output=malloc(buf_size);
#include "zck_private.h"
-zckIndexItem *get_index_of_loc(zckIndex *index, size_t loc) {
- zckIndexItem *idx = index->first;
- while(idx != NULL) {
- if(loc >= idx->start && loc < idx->start + idx->comp_length)
- return idx;
- idx = idx->next;
- }
- zck_log(ZCK_LOG_ERROR, "Unable to find index that contains position %lu\n",
- loc);
- return NULL;
-}
-
-void index_free_item(zckIndexItem **item) {
+static void index_free_item(zckIndexItem **item) {
if(*item == NULL)
return;
return False; \
}
+static int create_chunk(zckCtx *zck) {
+ VALIDATE(zck);
+
+ clear_work_index(zck);
+ zck->work_index_item = zmalloc(sizeof(zckIndexItem));
+ if(zck->work_index_item == NULL) {
+ zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
+ sizeof(zckIndexItem));
+ return False;
+ }
+ if(!hash_init(&(zck->work_index_hash), &(zck->chunk_hash_type)))
+ return False;
+ return True;
+}
+
+static int finish_chunk(zckIndex *index, zckIndexItem *item, char *digest,
+ int valid) {
+ VALIDATE(index);
+ VALIDATE(item);
+
+ item->digest = zmalloc(index->digest_size);
+ if(item->digest == NULL) {
+ zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
+ index->digest_size);
+ return False;
+ }
+ if(digest) {
+ memcpy(item->digest, digest, index->digest_size);
+ item->digest_size = index->digest_size;
+ }
+ item->start = index->length;
+ item->valid = valid;
+ if(index->first == NULL) {
+ index->first = item;
+ } else {
+ zckIndexItem *tmp = index->first;
+ while(tmp->next)
+ tmp = tmp->next;
+ tmp->next = item;
+ }
+ index->count += 1;
+ index->length += item->comp_length;
+ return True;
+}
+
int index_create(zckCtx *zck) {
VALIDATE(zck);
return True;
}
-static int finish_chunk(zckIndex *index, zckIndexItem *item, char *digest,
- int valid) {
- VALIDATE(index);
- VALIDATE(item);
-
- item->digest = zmalloc(index->digest_size);
- if(item->digest == NULL) {
- zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
- index->digest_size);
- return False;
- }
- if(digest) {
- memcpy(item->digest, digest, index->digest_size);
- item->digest_size = index->digest_size;
- }
- item->start = index->length;
- item->valid = valid;
- if(index->first == NULL) {
- index->first = item;
- } else {
- zckIndexItem *tmp = index->first;
- while(tmp->next)
- tmp = tmp->next;
- tmp->next = item;
- }
- index->count += 1;
- index->length += item->comp_length;
- return True;
-}
-
int index_new_chunk(zckIndex *index, char *digest, int digest_size,
size_t comp_size, size_t orig_size, int finished) {
if(index == NULL) {
return finish_chunk(index, idx, digest, finished);
}
-int index_create_chunk(zckCtx *zck) {
- VALIDATE(zck);
-
- clear_work_index(zck);
- zck->work_index_item = zmalloc(sizeof(zckIndexItem));
- if(zck->work_index_item == NULL) {
- zck_log(ZCK_LOG_ERROR, "Unable to allocate %lu bytes\n",
- sizeof(zckIndexItem));
- return False;
- }
- if(!hash_init(&(zck->work_index_hash), &(zck->chunk_hash_type)))
- return False;
- return True;
-}
-
int index_add_to_chunk(zckCtx *zck, char *data, size_t comp_size,
size_t orig_size) {
VALIDATE(zck);
- if(zck->work_index_item == NULL && !index_create_chunk(zck))
+ if(zck->work_index_item == NULL && !create_chunk(zck))
return False;
zck->work_index_item->length += orig_size;
int index_finish_chunk(zckCtx *zck) {
VALIDATE(zck);
- if(zck->work_index_item == NULL && !index_create_chunk(zck))
+ if(zck->work_index_item == NULL && !create_chunk(zck))
return False;
char *digest = NULL;
__attribute__ ((warn_unused_result));
void index_clean(zckIndex *index);
void index_free(zckCtx *zck);
-void index_free_item(zckIndexItem **item);
void clear_work_index(zckCtx *zck);
int write_index(zckCtx *zck)
__attribute__ ((warn_unused_result));
-zckIndexItem *get_index_of_loc(zckIndex *index, size_t loc)
- __attribute__ ((warn_unused_result));
/* io.c */
/* dl/range.c */
char *range_get_char(zckRangeItem **range, int max_ranges)
__attribute__ ((warn_unused_result));
-int range_add(zckRange *info, zckIndexItem *idx, zckCtx *zck)
- __attribute__ ((warn_unused_result));
/* dl/multipart.c */
size_t multipart_extract(zckDL *dl, char *b, size_t l)