diff --git a/src/action.c b/src/action.c index edcc545..14a62e0 100644 --- a/src/action.c +++ b/src/action.c @@ -5,7 +5,6 @@ static void action_list() { - PAction pa; PPager ppager; pit_db_load(); diff --git a/src/pit.h b/src/pit.h index cdb0c98..7af3c09 100644 --- a/src/pit.h +++ b/src/pit.h @@ -30,10 +30,10 @@ typedef int bool; #define max(a,b) ((a) > (b) ? (a) : (b)) #endif -#define for_each_project(ptr) for (ptr = (PProject)projects->slots; (ptr - (PProject)projects->slots) < projects->number_of_records; ptr++) -#define for_each_task(ptr) for (ptr = (PTask)tasks->slots; (ptr - (PTask)tasks->slots) < tasks->number_of_records; ptr++) -#define for_each_note(ptr) for (ptr = (PNote)notes->slots; (ptr - (PNote)notes->slots) < notes->number_of_records; ptr++) -#define for_each_action(ptr) for (ptr = (PAction)actions->slots; (ptr - (PAction)actions->slots) < actions->number_of_records; ptr++) +#define for_each_project(ptr) PProject ptr; for (ptr = (PProject)projects->slots; (ptr - (PProject)projects->slots) < projects->number_of_records; ptr++) +#define for_each_task(ptr) PTask ptr; for (ptr = (PTask)tasks->slots; (ptr - (PTask)tasks->slots) < tasks->number_of_records; ptr++) +#define for_each_note(ptr) PNote ptr; for (ptr = (PNote)notes->slots; (ptr - (PNote)notes->slots) < notes->number_of_records; ptr++) +#define for_each_action(ptr) PAction ptr; for (ptr = (PAction)actions->slots; (ptr - (PAction)actions->slots) < actions->number_of_records; ptr++) /* Externals. */ extern PTable actions; diff --git a/src/project.c b/src/project.c index d8c27a1..2df2d83 100644 --- a/src/project.c +++ b/src/project.c @@ -34,8 +34,7 @@ static void project_parse_options(char **arg, char **name, char **status); static void project_list(char *name, char *status) { - PProject pp; - PPager ppager; + PPager ppager; pit_db_load(); if (projects->number_of_records > 0) { @@ -81,8 +80,6 @@ static void project_show(ulong id) printf("%lu: %s (%s, %lu task%s)\n", pp->id, pp->name, pp->status, pp->number_of_tasks, (pp->number_of_tasks != 1 ? "s" : "")); if (pp->number_of_tasks > 0) { - PTask pt = (PTask)tasks->slots; - puts("Tasks:"); for_each_task(pt) { printf(" %c %lu: %s (%lu notes)\n", (pt->id == tasks->current ? '*' : ' '), pt->id, pt->name, pt->number_of_notes); @@ -113,13 +110,9 @@ static void project_update(ulong id, char *name, char *status) static void project_delete(ulong id) { PProject pp; - PTask pt; - char *deleted_name; - ulong deleted_number_of_tasks; pit_db_load(); project_find_current(&pp, &id); - /* ** Delete project tasks. */ @@ -135,8 +128,9 @@ static void project_delete(ulong id) ** Ready to delete the project itself. But first preserve the ** name and number of tasks since we need these bits for logging. */ - deleted_name = str2str(pp->name); - deleted_number_of_tasks = pp->number_of_tasks; + char *deleted_name = str2str(pp->name); + ulong deleted_number_of_tasks = pp->number_of_tasks; + pp = (PProject)pit_table_delete(projects, id); if (pp) { pit_table_mark(projects, 0); /* TODO: find better current project candidate. */ @@ -149,8 +143,6 @@ static void project_delete(ulong id) static bool project_already_exist(char *name) { - PProject pp; - pit_db_load(); for_each_project(pp) { if (!strcmp(pp->name, name)) { diff --git a/src/task.c b/src/task.c index 1011385..c74e8d1 100644 --- a/src/task.c +++ b/src/task.c @@ -32,14 +32,11 @@ static void task_parse_options(char **arg, char **name, char **status, char **pr static void task_list(char *name, char *status, char *priority, time_t date, time_t time) { - PProject pp; - PTask pt; - PPager ppager; - pit_db_load(); if (tasks->number_of_records > 0) { - pp = (PProject)pit_table_current(projects); - ppager = pit_pager_initialize(PAGER_TASK, tasks->number_of_records); + PProject pp = (PProject)pit_table_current(projects); + PPager ppager = pit_pager_initialize(PAGER_TASK, tasks->number_of_records); + for_each_task(pt) { if (pp && pt->project_id != pp->id) { continue; @@ -114,18 +111,15 @@ void pit_task_delete(ulong id, PProject pp) PTask pt; bool standalone = (pp == NULL); - if (standalone) { - pit_db_load(); - pp = (PProject)pit_table_find(projects, pt->project_id); - } + if (standalone) pit_db_load(); task_find_current(&pt, &id); + if (standalone) pp = (PProject)pit_table_find(projects, pt->project_id); if (pp) { /* ** First delete task notes if any. */ if (pt->number_of_notes > 0) { - PNote pn; for_each_note(pn) { if (pn->task_id == id) { pit_note_delete(pn->id, pt);