sparkey_returncode sparkey_logiter_create()

in src/logreader.c [153:182]


sparkey_returncode sparkey_logiter_create(sparkey_logiter **iter_ref, sparkey_logreader *log) {
  RETHROW(assert_log_open(log));

  sparkey_logiter *iter = malloc(sizeof(sparkey_logiter));
  if (iter == NULL) {
    return SPARKEY_INTERNAL_ERROR;
  }

  iter->open_status = MAGIC_VALUE_LOGITER;
  iter->file_identifier = log->header.file_identifier;
  iter->block_position = 0;
  iter->next_block_position = log->header.header_size;
  iter->block_offset = 0;
  iter->block_len = 0;
  iter->state = SPARKEY_ITER_NEW;

  if (sparkey_uses_compressor(log->header.compression_type)) {
    iter->compression_buf_allocated = 1;
    iter->compression_buf = malloc(log->header.compression_block_size);
    if (iter->compression_buf == NULL) {
      free(iter);
      return SPARKEY_INTERNAL_ERROR;
    }
  } else {
    iter->compression_buf_allocated = 0;
  }

  *iter_ref = iter;
  return SPARKEY_SUCCESS;
}