From cddaf13050d18e0ac330cca60e5b5e6a018f4e79 Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Fri, 12 Jun 2020 18:14:22 -0700 Subject: [PATCH] Cleanup (memory + dead code) --- Makefile | 3 +- asana/asana.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ asana/asana.h | 4 +++ ncac.c | 58 +------------------------------------- ui/commands.c | 4 ++- 5 files changed, 87 insertions(+), 59 deletions(-) diff --git a/Makefile b/Makefile index 6b3f8d5..12256cd 100644 --- a/Makefile +++ b/Makefile @@ -3,12 +3,13 @@ LDLIBS=-lncurses -lcurl .phony: clean +hdrs := $(wildcard **/*.h) srcs := $(wildcard **/*.c) objects := $(patsubst %.c,%.o,$(srcs)) ncac: $(objects) -tags: $(srcs) +tags: $(srcs) $(hdrs) ctags -w -t $^ clean: diff --git a/asana/asana.c b/asana/asana.c index 883adb0..6b86a50 100644 --- a/asana/asana.c +++ b/asana/asana.c @@ -225,3 +225,80 @@ asana_err user_task_list(char *task_list_gid, Project *task_list) { return ret; } + +void asana_free_resource_array(Resource *resource, size_t len) { + if (resource == NULL) + return; + + if (len > 0) { + size_t size = asana_resource_size(resource); + for (size_t i = 0; i < len; i++) { + Resource *item = (Resource *)(((char *)resource) + i * size); + asana_free_resource(item); + } + } + + free(resource); +} + +void asana_free_resource(Resource *resource) { + if (resource == NULL) + return; + + User *user; + Task *task; + Project *project; + + switch (resource->type) { + case WORKSPACE: + if (resource->gid != NULL) + free(resource->gid); + if (resource->name != NULL) + free(resource->name); + return; + case USER: + user = (User *)resource; + if (user->gid != NULL) + free(user->gid); + if (user->name != NULL) + free(user->name); + asana_free_resource_array((Resource *)user->workspaces, + user->workspaces_len); + return; + case TASK: + task = (Task *)resource; + if (task->gid != NULL) + free(task->gid); + if (task->name != NULL) + free(task->name); + if (task->notes != NULL) + free(task->notes); + return; + case PROJECT: + project = (Project *)resource; + if (project->gid != NULL) + free(project->gid); + if (project->name != NULL) + free(project->name); + asana_free_resource_array((Resource *)project->tasks, project->tasks_len); + return; + } + fprintf(stderr, "asana_free_resource: Unknown resource type %d\n", + resource->type); +} + +size_t asana_resource_size(Resource *resource) { + switch (resource->type) { + case WORKSPACE: + return sizeof(Workspace); + case USER: + return sizeof(User); + case TASK: + return sizeof(Task); + case PROJECT: + return sizeof(Project); + } + + fprintf(stderr, "asana_resource_size: Unknown resource type %d\n", + resource->type); +} diff --git a/asana/asana.h b/asana/asana.h index 1302c99..1ba5393 100644 --- a/asana/asana.h +++ b/asana/asana.h @@ -72,4 +72,8 @@ asana_err user_info(User *user); asana_err user_task_list_gid(char *workspace_gid, char *gid); asana_err user_task_list(char *task_list_gid, Project *task_list); +void asana_free_resource_array(Resource *resource, size_t len); +void asana_free_resource(Resource *resource); +size_t asana_resource_size(Resource *resource); + #endif // ASANA_ASANA_H_ diff --git a/ncac.c b/ncac.c index dcebd78..a5f82d1 100644 --- a/ncac.c +++ b/ncac.c @@ -119,61 +119,5 @@ static void setup() { signal(SIGINT, &finish); signal(SIGKILL, &finish); signal(SIGTERM, &finish); -} - -void get_me(int *curs_x, int *curs_y) { - User me; - user_info(&me); - - if (me.workspaces == NULL || me.workspaces_len == 0) { - fprintf(stderr, "Unable to get workspaces.\n"); - return; - } - - char gid[64]; - gid[0] = '\0'; - - user_task_list_gid(me.workspaces[0].gid, gid); - fprintf(stderr, "Got a task list? %s\n", gid); - - *curs_x = 0; - (*curs_y)++; - // draw_text(gid, curs_x, curs_y); -} - -void get_my_tasks(int *curs_x, int *curs_y) { - User me; - user_info(&me); - - if (me.workspaces == NULL || me.workspaces_len == 0) { - fprintf(stderr, "Unable to get workspaces.\n"); - return; - } - - char gid[64]; - gid[0] = '\0'; - - if (user_task_list_gid(me.workspaces[me.workspaces_len-1].gid, gid) != ASANA_ERR_OK) { - fprintf(stderr, "Unable to get task list ID. %s\n", gid); - return; - } - - Project my_tasks; - if (user_task_list(gid, &my_tasks) != ASANA_ERR_OK) { - fprintf(stderr, "Unable to get task list.\n"); - return; - } - - *curs_x = 0; - *curs_y = 0; - - // draw_text("My Tasks", curs_x, curs_y); - *curs_x = 0; - (*curs_y)+=2; - - for (size_t i=0; i