aboutsummaryrefslogtreecommitdiff
path: root/c_implementation/src/ak_fs_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'c_implementation/src/ak_fs_main.c')
-rw-r--r--c_implementation/src/ak_fs_main.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/c_implementation/src/ak_fs_main.c b/c_implementation/src/ak_fs_main.c
new file mode 100644
index 0000000..e399544
--- /dev/null
+++ b/c_implementation/src/ak_fs_main.c
@@ -0,0 +1,51 @@
+#include <getopt.h>
+#include <stdio.h>
+#include <libaklog.h>
+#include <libakfs.h>
+
+static int ak_fs_usage()
+{
+ ak_log_debug(__func__, "Available commands:");
+ ak_log_debug(__func__, "akfs --list");
+ ak_log_debug(__func__, "akfs --cfm <map hash>");
+ return 1;
+}
+
+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, "hlC:", long_options, &logind);
+ if ( option == -1 ) return ak_fs_usage();
+ switch(option)
+ {
+ case 'h':
+ return ak_fs_usage();
+ case 'l':
+ return ak_fs_ls();
+ case 'C':
+ ak_fs_map_v3_init(&map);
+ if ( ak_fs_sha512sum_string_to_struct(optarg, &map.mh) != 0 ) return -1;
+ if ( ak_fs_map_v3_open_from_file(&map) != 0 ) return -2;
+ return ak_fs_cfm(&map);
+ default:
+ printf("double lol\n");
+ return 4;
+ }
+ }
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ return ak_fs_main(argc, argv);
+}