61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0.If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http ://mozilla.org/MPL/2.0/.
|
|
*/
|
|
#include "ESPReader.h"
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#undef NDEBUG
|
|
#include <assert.h>
|
|
|
|
int main(void) {
|
|
FILE *fp;
|
|
errno_t ret = fopen_s(&fp, "Skyrim.esm", "rb");
|
|
|
|
if (ret || !fp)
|
|
return ret;
|
|
|
|
fseek(fp, 0L, SEEK_END);
|
|
size_t size = ftell(fp);
|
|
rewind(fp);
|
|
|
|
char *buffer = malloc(size);
|
|
if (!buffer)
|
|
return errno;
|
|
|
|
size_t read = fread(buffer, sizeof(char), size, fp);
|
|
assert(read == size);
|
|
|
|
struct sized_buf esp = { .data = buffer, .size = size };
|
|
|
|
struct esp_stats stats = espr_stats(buffer, size);
|
|
|
|
/*
|
|
char *decompressed = malloc(stats.decompressed_size);
|
|
if (!decompressed)
|
|
return errno;
|
|
|
|
// espr_print(buffer, size);
|
|
|
|
espr_decompress(buffer, size, decompressed, stats.decompressed_size);
|
|
*/
|
|
|
|
size_t tree_size = espr_tree_size(stats);
|
|
char *tree_data = malloc(tree_size);
|
|
struct sized_buf tree = { .data = tree_data, .size = tree_size };
|
|
|
|
MetaNode *root = espr_create_tree(esp, tree);
|
|
|
|
free(buffer);
|
|
|
|
/*
|
|
espr_print(decompressed, stats.decompressed_size);
|
|
|
|
free(decompressed);
|
|
*/
|
|
|
|
return 0;
|
|
}
|