From ba63ed7e423982d5bab2ab9ae8f7fda06c8ae7e2 Mon Sep 17 00:00:00 2001 From: kaotisk Date: Tue, 29 Apr 2025 06:16:56 +0300 Subject: Moving in to provide an interface for it --- c_implementation/src/ak_fs.c | 3 +++ c_implementation/src/ak_fs_main.c | 9 ++++++++- c_implementation/src/ak_fs_mt.c | 15 ++++++++++----- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/c_implementation/src/ak_fs.c b/c_implementation/src/ak_fs.c index 5643276..1a9e821 100644 --- a/c_implementation/src/ak_fs.c +++ b/c_implementation/src/ak_fs.c @@ -319,11 +319,14 @@ int ak_fs_cat_file_from_root_hash(sha512sum* rh) { ak_log_error(__func__, "File is smaller than expected. Wrong format?"); fclose(fd); + free(fullpath); return 2; } if ( buffer[128] != '\n' || buffer[257] != '\n' ) { ak_log_error(__func__, "Unknown format"); + fclose(fd); + free(fullpath); return 2; } char h_str[129] = {0}; diff --git a/c_implementation/src/ak_fs_main.c b/c_implementation/src/ak_fs_main.c index f1660cf..6b523c7 100644 --- a/c_implementation/src/ak_fs_main.c +++ b/c_implementation/src/ak_fs_main.c @@ -14,14 +14,16 @@ int ak_fs_main(int argc, char** argv) { int option; int logind = 0; + akfs_map_v3 map; static struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"list", no_argument, 0, 'l'}, + {"cfm", required_argument, 0, 'C'}, {0,0,0,0} }; while(1) { - option = getopt_long(argc, argv, "hl", long_options, &logind); + option = getopt_long(argc, argv, "hlC:", long_options, &logind); if ( option == -1 ) return ak_fs_usage(); switch(option) { @@ -29,6 +31,11 @@ int ak_fs_main(int argc, char** argv) return ak_fs_usage(); case 'l': return ak_fs_ls(); + case 'C': + ak_fs_map_v3_init(&map); + ak_fs_sha512sum_string_to_struct(optarg, &map.mh); + ak_fs_map_v3_open_from_file(&map); + return ak_fs_cfm(&map); default: printf("double lol\n"); return 4; diff --git a/c_implementation/src/ak_fs_mt.c b/c_implementation/src/ak_fs_mt.c index d083eae..2c3414b 100644 --- a/c_implementation/src/ak_fs_mt.c +++ b/c_implementation/src/ak_fs_mt.c @@ -3,17 +3,17 @@ #include #include -bool ak_fs_mt_branch_is_null(mt_branch* node) +bool ak_fs_mt_branch_is_null(mt_branch* n) { - if ( node == NULL ) + if ( n == NULL ) { ak_log_warning(__func__, "A NULL mt_branch* node was given"); return false; } if ( - ak_fs_sha512sum_is_null(&node->root) && - ak_fs_sha512sum_is_null(&node->head) && - ak_fs_sha512sum_is_null(&node->tail) + ak_fs_sha512sum_is_null(&n->root) && + ak_fs_sha512sum_is_null(&n->head) && + ak_fs_sha512sum_is_null(&n->tail) ) { return true; @@ -41,6 +41,11 @@ bool ak_fs_mt_branch_compare(mt_branch *a, mt_branch *b) void ak_fs_mt_branch_print(mt_branch *n) { + if ( n == NULL ) + { + ak_log_warning(__func__, "NULL mt_branch* was given"); + return; + } 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)); -- cgit v1.2.3