diff options
Diffstat (limited to 'c_implementation/src/ak_fs_mt.c')
-rw-r--r-- | c_implementation/src/ak_fs_mt.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/c_implementation/src/ak_fs_mt.c b/c_implementation/src/ak_fs_mt.c index 7bdd6f4..e194980 100644 --- a/c_implementation/src/ak_fs_mt.c +++ b/c_implementation/src/ak_fs_mt.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <libakfs.h> +#include <libaklog.h> #include <stdlib.h> bool ak_fs_mt_branch_is_null(mt_branch* node) @@ -28,12 +29,19 @@ bool ak_fs_mt_branch_compare(mt_branch *a, mt_branch *b) return false; } +void ak_fs_mt_branch_print(mt_branch *n) +{ + printf("r: %s\n", ak_fs_sha512sum_struct_read_as_string(&n->root)); + printf("h: %s\n", ak_fs_sha512sum_struct_read_as_string(&n->head)); + printf("t: %s\n", ak_fs_sha512sum_struct_read_as_string(&n->tail)); +} + int ak_fs_mt_branch_resolve(mt_branch *node) { const char* leafs_dir = getenv("AK_LEAFSDIR"); FILE *fd; char *fullpath; - asprintf(&fullpath, "%s/%s", leafs_dir, ak_fs_sha512sum_struct_read_as_string(&node->head)); + if ( asprintf(&fullpath, "%s/%s", leafs_dir, ak_fs_sha512sum_struct_read_as_string(&node->head)) == -1 ) return -1; fd = fopen(fullpath, "r"); if ( fd == NULL ) { @@ -43,9 +51,14 @@ int ak_fs_mt_branch_resolve(mt_branch *node) char buffer[258]; fread(&buffer, sizeof(buffer), 1, fd); fclose(fd); + free(fullpath); char h1[129] = {0}; char h2[129] = {0}; - if ( buffer[128] == '\n' && buffer[257] == '\n' ) printf("\\n found on the expected spot!\n"); + if ( buffer[128] != '\n' && buffer[257] != '\n' ) + { + ak_log_error(__func__, "Unknown format"); + return 2; + } mt_branch h0; ak_fs_sha512sum_init(&h0.root); ak_fs_sha512sum_init(&h0.head); @@ -63,6 +76,7 @@ int ak_fs_mt_branch_resolve(mt_branch *node) h2[128] = '\0'; ak_fs_sha512sum_string_to_struct(h1, &h0.head); ak_fs_sha512sum_string_to_struct(h2, &h0.tail); + ak_fs_mt_branch_print(&h0); ak_fs_mt_branch_resolve(&h0); return 0; } |