static sparkey_returncode logheader_version0()

in src/logheader.c [38:66]


static sparkey_returncode logheader_version0(sparkey_logheader *header, FILE *fp) {
  RETHROW(fread_little_endian32(fp, &header->file_identifier));
  RETHROW(fread_little_endian64(fp, &header->num_puts));
  RETHROW(fread_little_endian64(fp, &header->num_deletes));
  RETHROW(fread_little_endian64(fp, &header->data_end));
  RETHROW(fread_little_endian64(fp, &header->max_key_len));
  RETHROW(fread_little_endian64(fp, &header->max_value_len));
  RETHROW(fread_little_endian64(fp, &header->delete_size));
  RETHROW(fread_little_endian32(fp, &header->compression_type));
  RETHROW(fread_little_endian32(fp, &header->compression_block_size));
  RETHROW(fread_little_endian64(fp, &header->put_size));
  RETHROW(fread_little_endian32(fp, &header->max_entries_per_block));
  header->header_size = LOG_HEADER_SIZE;

  // Some basic consistency checks
  if (header->data_end < header->header_size) {
    return SPARKEY_LOG_HEADER_CORRUPT;
  }
  if (header->num_puts > header->data_end) {
    return SPARKEY_LOG_HEADER_CORRUPT;
  }
  if (header->num_deletes > header->data_end) {
    return SPARKEY_LOG_HEADER_CORRUPT;
  }
  if (header->compression_type > SPARKEY_COMPRESSION_ZSTD) {
    return SPARKEY_LOG_HEADER_CORRUPT;
  }
  return SPARKEY_SUCCESS;
}