From 2891fea4e91cc846671447efbd0c0328553fda97 Mon Sep 17 00:00:00 2001 From: Riley Date: Tue, 13 May 2025 20:29:04 -0500 Subject: [PATCH] Add cjson dependency and enhance todoitem management: refactor structures and functions --- conanfile.py | 1 + meson.build | 8 +++++--- src/include/todoitem.h | 19 +++++++++++++++++++ src/include/{toidoitem.h => todoitem_fs.h} | 0 src/paths.c | 1 - src/todoitem.c | 12 ------------ src/todoitem_fs.c | 12 ++++++++++++ 7 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 src/include/todoitem.h rename src/include/{toidoitem.h => todoitem_fs.h} (100%) create mode 100644 src/todoitem_fs.c diff --git a/conanfile.py b/conanfile.py index e422b82..7bba3a9 100644 --- a/conanfile.py +++ b/conanfile.py @@ -21,6 +21,7 @@ class helloConan(ConanFile): def requirements(self): self.requires("cwalk/1.2.8") + self.requires("cjson/1.7.18") def generate(self): deps = PkgConfigDeps(self) diff --git a/meson.build b/meson.build index ff58900..cb02b6a 100644 --- a/meson.build +++ b/meson.build @@ -5,9 +5,11 @@ target_name = 'main' # self.requires("zlib/1.2.11") cwalk = dependency('cwalk', version : '1.2.8', static: true, required: true) +# self.requires("cjson/1.7.18") +cjson = dependency('cjson', version : '1.7.18', static: true, required: true) - -files = files('src/main.c', 'src/paths.c', 'src/log.c') +files = files('src/main.c', 'src/paths.c', 'src/log.c', + 'src/todoitem.c', 'src/todoitem_fs.c') if get_option('buildtype') == 'debug' if CC.has_argument('-fsanitize=address') and CC.has_link_argument('-fsanitize=address') @@ -18,6 +20,6 @@ if get_option('buildtype') == 'debug' endif -executable(target_name, files, dependencies: [cwalk], include_directories: include_directories('src/include')) +executable(target_name, files, dependencies: [cwalk, cjson], include_directories: include_directories('src/include')) diff --git a/src/include/todoitem.h b/src/include/todoitem.h new file mode 100644 index 0000000..ebdf281 --- /dev/null +++ b/src/include/todoitem.h @@ -0,0 +1,19 @@ +typedef struct { + char *name; + char *description; + int priority; + int completed; +} todoitem; + +typedef struct { + todoitem *items; + int count; +} todolist; + +todolist *tdl_init(); +void tdl_free(todolist *list); +void tdl_add_item(todolist *list, char *name, char *description, int priority, int completed); +todoitem *tdi_init(char *name, char *description, int priority, int completed); +void tdl_free(todolist *list); +void tdl_remove_item(todolist *list, int index); +void tdi_free(todoitem *item); \ No newline at end of file diff --git a/src/include/toidoitem.h b/src/include/todoitem_fs.h similarity index 100% rename from src/include/toidoitem.h rename to src/include/todoitem_fs.h diff --git a/src/paths.c b/src/paths.c index 0c7f334..bd4b200 100644 --- a/src/paths.c +++ b/src/paths.c @@ -46,7 +46,6 @@ int setup_appdata() { } log_debug("Appdata folder already exists: %s", path); - mkdir(path); free(path); return 0; // no change } diff --git a/src/todoitem.c b/src/todoitem.c index 05074c0..ac66972 100644 --- a/src/todoitem.c +++ b/src/todoitem.c @@ -21,18 +21,6 @@ todolist *tdl_init() { return list; } -void tdl_free(todolist *list) { - if (list != NULL) { - for (int i = 0; i < list->count; i++) { - free(list->items[i].name); - free(list->items[i].description); - } - free(list->items); - free(list); - } -} - - void tdl_add_item(todolist *list, char *name, char *description, int priority, int completed) { list->items = realloc(list->items, sizeof(todoitem) * (list->count + 1)); list->items[list->count].name = name; diff --git a/src/todoitem_fs.c b/src/todoitem_fs.c new file mode 100644 index 0000000..9387ed0 --- /dev/null +++ b/src/todoitem_fs.c @@ -0,0 +1,12 @@ +#include +#include +#include + +todolist *tdl_load_from_disk(FILE *fp) { + if(!fp) return NULL; + // loads dynamically as a list of json objects in the given file + // TODO: im done for the day do thsi tmr + + todolist *list = tdl_init(); + return list; +} \ No newline at end of file