in src/logheader.c [73:104]
sparkey_returncode sparkey_load_logheader(sparkey_logheader *header, const char *filename) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
return sparkey_open_returncode(errno);
}
uint32_t tmp;
RETHROW(fread_little_endian32(fp, &tmp));
if (tmp != LOG_MAGIC_NUMBER) {
fclose(fp);
return SPARKEY_WRONG_LOG_MAGIC_NUMBER;
}
RETHROW(fread_little_endian32(fp, &header->major_version));
if (header->major_version != LOG_MAJOR_VERSION) {
fclose(fp);
return SPARKEY_WRONG_LOG_MAJOR_VERSION;
}
RETHROW(fread_little_endian32(fp, &header->minor_version));
if (header->minor_version > LOG_MINOR_VERSION) {
fclose(fp);
return SPARKEY_UNSUPPORTED_LOG_MINOR_VERSION;
}
int version = header->minor_version;
loader l = loaders[version];
if (l == NULL) {
fclose(fp);
return SPARKEY_INTERNAL_ERROR;
}
sparkey_returncode x = (*l)(header, fp);
fclose(fp);
return x;
}