Cleanup (memory + dead code)
This commit is contained in:
3
Makefile
3
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:
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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_
|
||||
|
||||
58
ncac.c
58
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<my_tasks.tasks_len;i++) {
|
||||
// draw_text(my_tasks.tasks[i].name, curs_x, curs_y);
|
||||
*curs_x = 0;
|
||||
(*curs_y)++;
|
||||
}
|
||||
signal(SIGSEGV, &finish);
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ bool ui_mytasks(ui_state *state) {
|
||||
clrtobot();
|
||||
refresh();
|
||||
|
||||
Project my_tasks;
|
||||
Project my_tasks = {PROJECT, NULL, NULL, 0, NULL};
|
||||
if (user_task_list(gid, &my_tasks) != ASANA_ERR_OK) {
|
||||
fprintf(stderr, "Unable to get task list.\n");
|
||||
return true;
|
||||
@@ -87,6 +87,8 @@ bool ui_mytasks(ui_state *state) {
|
||||
clrtoeol();
|
||||
}
|
||||
|
||||
asana_free_resource((Resource *)&my_tasks);
|
||||
|
||||
clrtobot();
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user