Cleanup (memory + dead code)
This commit is contained in:
3
Makefile
3
Makefile
@@ -3,12 +3,13 @@ LDLIBS=-lncurses -lcurl
|
|||||||
|
|
||||||
.phony: clean
|
.phony: clean
|
||||||
|
|
||||||
|
hdrs := $(wildcard **/*.h)
|
||||||
srcs := $(wildcard **/*.c)
|
srcs := $(wildcard **/*.c)
|
||||||
objects := $(patsubst %.c,%.o,$(srcs))
|
objects := $(patsubst %.c,%.o,$(srcs))
|
||||||
|
|
||||||
ncac: $(objects)
|
ncac: $(objects)
|
||||||
|
|
||||||
tags: $(srcs)
|
tags: $(srcs) $(hdrs)
|
||||||
ctags -w -t $^
|
ctags -w -t $^
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
|||||||
@@ -225,3 +225,80 @@ asana_err user_task_list(char *task_list_gid, Project *task_list) {
|
|||||||
|
|
||||||
return ret;
|
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_gid(char *workspace_gid, char *gid);
|
||||||
asana_err user_task_list(char *task_list_gid, Project *task_list);
|
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_
|
#endif // ASANA_ASANA_H_
|
||||||
|
|||||||
58
ncac.c
58
ncac.c
@@ -119,61 +119,5 @@ static void setup() {
|
|||||||
signal(SIGINT, &finish);
|
signal(SIGINT, &finish);
|
||||||
signal(SIGKILL, &finish);
|
signal(SIGKILL, &finish);
|
||||||
signal(SIGTERM, &finish);
|
signal(SIGTERM, &finish);
|
||||||
}
|
signal(SIGSEGV, &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)++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ bool ui_mytasks(ui_state *state) {
|
|||||||
clrtobot();
|
clrtobot();
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
Project my_tasks;
|
Project my_tasks = {PROJECT, NULL, NULL, 0, NULL};
|
||||||
if (user_task_list(gid, &my_tasks) != ASANA_ERR_OK) {
|
if (user_task_list(gid, &my_tasks) != ASANA_ERR_OK) {
|
||||||
fprintf(stderr, "Unable to get task list.\n");
|
fprintf(stderr, "Unable to get task list.\n");
|
||||||
return true;
|
return true;
|
||||||
@@ -87,6 +87,8 @@ bool ui_mytasks(ui_state *state) {
|
|||||||
clrtoeol();
|
clrtoeol();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
asana_free_resource((Resource *)&my_tasks);
|
||||||
|
|
||||||
clrtobot();
|
clrtobot();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user