Compare commits

..

No commits in common. "cbbbf68db0631283718142b6cf830b7db55eba98" and "ed063a74836af98ff6a6d986e97b7076a15a5eb1" have entirely different histories.

4 changed files with 41 additions and 60 deletions

View file

@ -30,7 +30,7 @@ struct klist_user_context {
};
typedef struct klist_user_context klist_user_context;
klist_user_context *klist_user_context_init(void);
klist_user_context *klist_user_context_init(klist *list);
void klist_user_context_deinit(klist_user_context *ctx);
enum klist_list_command {
@ -49,7 +49,7 @@ struct klist_list_context {
};
typedef struct klist_list_context klist_list_context;
klist_list_context *klist_list_context_init(void);
klist_list_context *klist_list_context_init(klist *list);
klist_list_context *klist_list_context_get_by_id(klist_list_context *ctx,
u_int id);
void klist_list_context_deinit(klist_list_context *ctx);

View file

@ -29,7 +29,7 @@ int main(int argc, char **argv) {
case USER_GET:
if (user) {
fprintf(stderr, "User: %p\nID: %lu\n", user->name, user->id);
size_t lists_len = 0;
size_t lists_len, i = 0;
klist_list **lists =
klist_list_get_all_by_user(ctx, user->id, &lists_len);
fprintf(stderr, "Lists: %lu\n", lists_len);
@ -55,7 +55,7 @@ int main(int argc, char **argv) {
break;
case LIST:
klist_list_context *list_ctx = ctx->cmd_ctx;
if (!list_ctx->name && list_ctx->cmd != LIST_GET) {
if (!list_ctx->name) {
fprintf(stderr, "Missing name.\n");
break;
}
@ -83,35 +83,21 @@ int main(int argc, char **argv) {
fprintf(stderr, "Not implemented\n");
break;
case LIST_GET:
size_t lists_len = 0;
klist_list **lists = NULL;
if (list_ctx->name) {
klist_list *list =
klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
if (list) {
lists_len = 1;
lists = &list;
};
klist_assure_user(ctx, getuid(), getlogin());
user = klist_user_get_by_local(ctx, getuid());
list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
if (list) {
size_t tasks_len = 0;
klist_task **tasks =
klist_task_get_for_list(ctx, list->id, &tasks_len);
fprintf(stderr, "Name: %s\nDescription: %s\nTasks: %ld\n",
(char *)list->name, (char *)list->desc, tasks_len);
int i = 0;
for (; i < tasks_len; i++)
klist_task_deinit(tasks[i]);
free(tasks);
} else
lists = klist_list_get_all_by_user(ctx, user->id, &lists_len);
if (lists) {
i = 0;
for (; i < lists_len; i++) {
klist_list *list = lists[i];
size_t tasks_len = 0;
klist_task **tasks =
klist_task_get_for_list(ctx, list->id, &tasks_len);
fprintf(stderr, "Name: %s\nDescription: %s\nTasks: %ld\n",
(char *)list->name, (char *)list->desc, tasks_len);
i = 0;
for (; i < tasks_len; i++)
klist_task_deinit(tasks[i]);
free(tasks);
}
} else if (list_ctx->name)
fprintf(stderr, "List '%s' not found.\n", list_ctx->name);
else
fprintf(stderr, "No lists found.\n");
break;
case LIST_DELETE:
list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
@ -119,7 +105,7 @@ int main(int argc, char **argv) {
size_t tasks_len = 0;
klist_task **tasks =
klist_task_get_for_list(ctx, list->id, &tasks_len);
i = 0;
int i = 0;
for (; i < tasks_len; i++) {
klist_task_delete(ctx, tasks[i]);
klist_task_deinit(tasks[i]);
@ -238,8 +224,8 @@ int main(int argc, char **argv) {
} else
fprintf(stderr, "Task not found, only deletion by name is "
"currently supoprted.\n");
} else
fprintf(stderr, "Not implemented\n");
}
fprintf(stderr, "Not implemented\n");
}
klist_task_context_deinit(task_ctx);
default:;
@ -273,7 +259,7 @@ void setup(klist *ctx, int argc, char **argv) {
switch (ctx->cmd) {
case USER:
optind = 2;
klist_user_context *user_ctx = klist_user_context_init();
klist_user_context *user_ctx = klist_user_context_init(ctx);
while ((opt = getopt(argc, argv, "cdg")) != -1)
switch (opt) {
case 'c':
@ -291,15 +277,14 @@ void setup(klist *ctx, int argc, char **argv) {
ctx->cmd_ctx = user_ctx;
break;
case LIST:
klist_list_context *list_ctx = klist_list_context_init();
ctx->cmd_ctx = list_ctx;
if (argc < 3) {
list_ctx->cmd = LIST_GET;
fprintf(stderr, "Prints all lists.\n");
break;
}
klist_list_context *list_ctx = malloc(sizeof(struct klist_list_context));
optind = 3;
while ((opt = getopt(argc, argv, "aden:p:s:")) != -1)
while ((opt = getopt(argc, argv, "adep:s:")) != -1)
switch (opt) {
case 'a':
list_ctx->cmd = LIST_ADD;
@ -314,23 +299,20 @@ void setup(klist *ctx, int argc, char **argv) {
list_ctx->preset = malloc((strlen(optarg) + 1) * sizeof(char));
strcpy(list_ctx->preset, optarg);
break;
case 'n':
list_ctx->name = malloc((strlen(optarg) + 1) * sizeof(char));
strcpy(list_ctx->name, optarg);
break;
default:
print_help(argv);
fprintf(stderr,
""
"list options:\n"
"-a\t\tadd a list\n"
"-e\t\tedit a list\n"
"-d\t\tdelete a list\n"
"-p <preset>\tdefine as preset or use existing one with name "
"<preset>\n"
"Not providing a parameter prints all lists and existing "
"presets.\n\n");
fprintf(
stderr,
""
"list options:\n"
"-a\t\tadd a list\n"
"-e\t\tedit a list\n"
"-d\t\tdelete a list\n"
"-p <preset>\tdefine as preset or use existing one with name "
"<preset>"
"Not providing a parameter prints all lists and existing presets.");
}
ctx->cmd_ctx = list_ctx;
break;
case TASK:
if (argc < 3) {

View file

@ -42,7 +42,6 @@ klist_user *klist_user_get_by_local(klist *ctx, u_int local_id) {
sqlite3_clear_bindings(stmt);
return klist_user_init_from_sql(stmt);
}
fprintf(stderr, "failed to get user by local id %u\n", local_id);
return NULL;
}
@ -51,7 +50,7 @@ void klist_user_save(klist *ctx, klist_user *user) {
int result = 0;
sqlite3_bind_text(stmt, 1, (char *)user->name, -1, SQLITE_STATIC);
if ((result = sqlite3_step(stmt)) == SQLITE_ROW)
user->id = sqlite3_column_int(stmt, 0);
user->id = sqlite3_column_int(stmt, 1);
else
fprintf(stderr, "failed to save user: %s - %d\n", sqlite3_errmsg(ctx->db),
result);
@ -140,7 +139,7 @@ void klist_stage_save(klist *ctx, klist_stage *stage) {
sqlite3_bind_text(stmt, 1, (char *)stage->name, -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, (char *)stage->name, -1, SQLITE_STATIC);
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
stage->id = sqlite3_column_int(stmt, 0);
stage->id = sqlite3_column_int(stmt, 1);
sqlite3_clear_bindings(stmt);
} else
fprintf(stderr, "failed to save stage: %s - %d\n", sqlite3_errmsg(ctx->db),
@ -228,7 +227,7 @@ void klist_list_save(klist *ctx, klist_list *list) {
sqlite3_bind_text(stmt, 1, (char *)list->name, -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, (char *)list->desc, -1, SQLITE_STATIC);
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
list->id = sqlite3_column_int(stmt, 0);
list->id = sqlite3_column_int(stmt, 1);
sqlite3_clear_bindings(stmt);
} else
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),
@ -315,7 +314,7 @@ void klist_task_save(klist *ctx, klist_task *task) {
if (task->target_stage)
sqlite3_bind_int(stmt, 5, task->target_stage);
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
task->id = sqlite3_column_int(stmt, 0);
task->id = sqlite3_column_int(stmt, 1);
sqlite3_clear_bindings(stmt);
} else
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),

View file

@ -32,14 +32,14 @@ void klist_deinit(klist *ctx) {
free(ctx);
}
klist_user_context *klist_user_context_init() {
klist_user_context *klist_user_context_init(klist *list) {
klist_user_context *ctx = malloc(sizeof(klist_user_context));
ctx->cmd = -1;
return ctx;
}
void klist_user_context_deinit(klist_user_context *ctx) { free(ctx); }
klist_list_context *klist_list_context_init() {
klist_list_context *klist_list_context_init(klist *list) {
klist_list_context *ctx = malloc(sizeof(klist_list_context));
ctx->cmd = -1;
ctx->name = NULL;