bug fixing
This commit is contained in:
parent
ed063a7483
commit
9905e9fada
5 changed files with 54 additions and 36 deletions
|
@ -30,7 +30,7 @@ struct klist_user_context {
|
||||||
};
|
};
|
||||||
typedef struct klist_user_context klist_user_context;
|
typedef struct klist_user_context klist_user_context;
|
||||||
|
|
||||||
klist_user_context *klist_user_context_init(klist *list);
|
klist_user_context *klist_user_context_init(void);
|
||||||
void klist_user_context_deinit(klist_user_context *ctx);
|
void klist_user_context_deinit(klist_user_context *ctx);
|
||||||
|
|
||||||
enum klist_list_command {
|
enum klist_list_command {
|
||||||
|
@ -49,7 +49,7 @@ struct klist_list_context {
|
||||||
};
|
};
|
||||||
typedef struct klist_list_context klist_list_context;
|
typedef struct klist_list_context klist_list_context;
|
||||||
|
|
||||||
klist_list_context *klist_list_context_init(klist *list);
|
klist_list_context *klist_list_context_init(void);
|
||||||
klist_list_context *klist_list_context_get_by_id(klist_list_context *ctx,
|
klist_list_context *klist_list_context_get_by_id(klist_list_context *ctx,
|
||||||
u_int id);
|
u_int id);
|
||||||
void klist_list_context_deinit(klist_list_context *ctx);
|
void klist_list_context_deinit(klist_list_context *ctx);
|
||||||
|
|
|
@ -29,7 +29,7 @@ int main(int argc, char **argv) {
|
||||||
case USER_GET:
|
case USER_GET:
|
||||||
if (user) {
|
if (user) {
|
||||||
fprintf(stderr, "User: %p\nID: %lu\n", user->name, user->id);
|
fprintf(stderr, "User: %p\nID: %lu\n", user->name, user->id);
|
||||||
size_t lists_len, i = 0;
|
size_t lists_len = 0;
|
||||||
klist_list **lists =
|
klist_list **lists =
|
||||||
klist_list_get_all_by_user(ctx, user->id, &lists_len);
|
klist_list_get_all_by_user(ctx, user->id, &lists_len);
|
||||||
fprintf(stderr, "Lists: %lu\n", lists_len);
|
fprintf(stderr, "Lists: %lu\n", lists_len);
|
||||||
|
@ -55,7 +55,7 @@ int main(int argc, char **argv) {
|
||||||
break;
|
break;
|
||||||
case LIST:
|
case LIST:
|
||||||
klist_list_context *list_ctx = ctx->cmd_ctx;
|
klist_list_context *list_ctx = ctx->cmd_ctx;
|
||||||
if (!list_ctx->name) {
|
if (!list_ctx->name && list_ctx->cmd != LIST_GET) {
|
||||||
fprintf(stderr, "Missing name.\n");
|
fprintf(stderr, "Missing name.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -83,21 +83,34 @@ int main(int argc, char **argv) {
|
||||||
fprintf(stderr, "Not implemented\n");
|
fprintf(stderr, "Not implemented\n");
|
||||||
break;
|
break;
|
||||||
case LIST_GET:
|
case LIST_GET:
|
||||||
klist_assure_user(ctx, getuid(), getlogin());
|
size_t lists_len = 0;
|
||||||
user = klist_user_get_by_local(ctx, getuid());
|
klist_list **lists = NULL;
|
||||||
list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
|
if (list_ctx->name) {
|
||||||
|
klist_list *list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
|
||||||
if (list) {
|
if (list) {
|
||||||
|
lists_len = 1;
|
||||||
|
lists = &list;
|
||||||
|
};
|
||||||
|
} 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;
|
size_t tasks_len = 0;
|
||||||
klist_task **tasks =
|
klist_task **tasks =
|
||||||
klist_task_get_for_list(ctx, list->id, &tasks_len);
|
klist_task_get_for_list(ctx, list->id, &tasks_len);
|
||||||
fprintf(stderr, "Name: %s\nDescription: %s\nTasks: %ld\n",
|
fprintf(stderr, "Name: %s\nDescription: %s\nTasks: %ld\n",
|
||||||
(char *)list->name, (char *)list->desc, tasks_len);
|
(char *)list->name, (char *)list->desc, tasks_len);
|
||||||
int i = 0;
|
i = 0;
|
||||||
for (; i < tasks_len; i++)
|
for (; i < tasks_len; i++)
|
||||||
klist_task_deinit(tasks[i]);
|
klist_task_deinit(tasks[i]);
|
||||||
free(tasks);
|
free(tasks);
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
|
if (list_ctx->name)
|
||||||
fprintf(stderr, "List '%s' not found.\n", list_ctx->name);
|
fprintf(stderr, "List '%s' not found.\n", list_ctx->name);
|
||||||
|
else
|
||||||
|
fprintf(stderr, "No lists found.\n");
|
||||||
break;
|
break;
|
||||||
case LIST_DELETE:
|
case LIST_DELETE:
|
||||||
list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
|
list = klist_list_get_by_user_and_name(ctx, user->id, list_ctx->name);
|
||||||
|
@ -105,7 +118,7 @@ int main(int argc, char **argv) {
|
||||||
size_t tasks_len = 0;
|
size_t tasks_len = 0;
|
||||||
klist_task **tasks =
|
klist_task **tasks =
|
||||||
klist_task_get_for_list(ctx, list->id, &tasks_len);
|
klist_task_get_for_list(ctx, list->id, &tasks_len);
|
||||||
int i = 0;
|
i = 0;
|
||||||
for (; i < tasks_len; i++) {
|
for (; i < tasks_len; i++) {
|
||||||
klist_task_delete(ctx, tasks[i]);
|
klist_task_delete(ctx, tasks[i]);
|
||||||
klist_task_deinit(tasks[i]);
|
klist_task_deinit(tasks[i]);
|
||||||
|
@ -224,7 +237,7 @@ int main(int argc, char **argv) {
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, "Task not found, only deletion by name is "
|
fprintf(stderr, "Task not found, only deletion by name is "
|
||||||
"currently supoprted.\n");
|
"currently supoprted.\n");
|
||||||
}
|
} else
|
||||||
fprintf(stderr, "Not implemented\n");
|
fprintf(stderr, "Not implemented\n");
|
||||||
}
|
}
|
||||||
klist_task_context_deinit(task_ctx);
|
klist_task_context_deinit(task_ctx);
|
||||||
|
@ -259,7 +272,7 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
switch (ctx->cmd) {
|
switch (ctx->cmd) {
|
||||||
case USER:
|
case USER:
|
||||||
optind = 2;
|
optind = 2;
|
||||||
klist_user_context *user_ctx = klist_user_context_init(ctx);
|
klist_user_context *user_ctx = klist_user_context_init();
|
||||||
while ((opt = getopt(argc, argv, "cdg")) != -1)
|
while ((opt = getopt(argc, argv, "cdg")) != -1)
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'c':
|
case 'c':
|
||||||
|
@ -277,14 +290,16 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
ctx->cmd_ctx = user_ctx;
|
ctx->cmd_ctx = user_ctx;
|
||||||
break;
|
break;
|
||||||
case LIST:
|
case LIST:
|
||||||
|
klist_list_context *list_ctx = klist_list_context_init();
|
||||||
|
ctx->cmd_ctx = list_ctx;
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
fprintf(stderr, "Prints all lists.\n");
|
list_ctx->cmd = LIST_GET;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
klist_list_context *list_ctx = malloc(sizeof(struct klist_list_context));
|
|
||||||
|
|
||||||
optind = 3;
|
optind = 3;
|
||||||
while ((opt = getopt(argc, argv, "adep:s:")) != -1)
|
while ((opt = getopt(argc, argv, "aden:p:s:")) != -1)
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
list_ctx->cmd = LIST_ADD;
|
list_ctx->cmd = LIST_ADD;
|
||||||
|
@ -299,6 +314,10 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
list_ctx->preset = malloc((strlen(optarg) + 1) * sizeof(char));
|
list_ctx->preset = malloc((strlen(optarg) + 1) * sizeof(char));
|
||||||
strcpy(list_ctx->preset, optarg);
|
strcpy(list_ctx->preset, optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
list_ctx->name = malloc((strlen(optarg) + 1) * sizeof(char));
|
||||||
|
strcpy(list_ctx->name, optarg);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
print_help(argv);
|
print_help(argv);
|
||||||
fprintf(
|
fprintf(
|
||||||
|
@ -309,10 +328,9 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
"-e\t\tedit a list\n"
|
"-e\t\tedit a list\n"
|
||||||
"-d\t\tdelete a list\n"
|
"-d\t\tdelete a list\n"
|
||||||
"-p <preset>\tdefine as preset or use existing one with name "
|
"-p <preset>\tdefine as preset or use existing one with name "
|
||||||
"<preset>"
|
"<preset>\n"
|
||||||
"Not providing a parameter prints all lists and existing presets.");
|
"Not providing a parameter prints all lists and existing presets.\n\n");
|
||||||
}
|
}
|
||||||
ctx->cmd_ctx = list_ctx;
|
|
||||||
break;
|
break;
|
||||||
case TASK:
|
case TASK:
|
||||||
if (argc < 3) {
|
if (argc < 3) {
|
||||||
|
|
|
@ -42,6 +42,7 @@ klist_user *klist_user_get_by_local(klist *ctx, u_int local_id) {
|
||||||
sqlite3_clear_bindings(stmt);
|
sqlite3_clear_bindings(stmt);
|
||||||
return klist_user_init_from_sql(stmt);
|
return klist_user_init_from_sql(stmt);
|
||||||
}
|
}
|
||||||
|
fprintf(stderr, "failed to get user by local id %u\n", local_id);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +51,7 @@ void klist_user_save(klist *ctx, klist_user *user) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
sqlite3_bind_text(stmt, 1, (char *)user->name, -1, SQLITE_STATIC);
|
sqlite3_bind_text(stmt, 1, (char *)user->name, -1, SQLITE_STATIC);
|
||||||
if ((result = sqlite3_step(stmt)) == SQLITE_ROW)
|
if ((result = sqlite3_step(stmt)) == SQLITE_ROW)
|
||||||
user->id = sqlite3_column_int(stmt, 1);
|
user->id = sqlite3_column_int(stmt, 0);
|
||||||
else
|
else
|
||||||
fprintf(stderr, "failed to save user: %s - %d\n", sqlite3_errmsg(ctx->db),
|
fprintf(stderr, "failed to save user: %s - %d\n", sqlite3_errmsg(ctx->db),
|
||||||
result);
|
result);
|
||||||
|
@ -139,7 +140,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, 1, (char *)stage->name, -1, SQLITE_STATIC);
|
||||||
sqlite3_bind_text(stmt, 2, (char *)stage->name, -1, SQLITE_STATIC);
|
sqlite3_bind_text(stmt, 2, (char *)stage->name, -1, SQLITE_STATIC);
|
||||||
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
||||||
stage->id = sqlite3_column_int(stmt, 1);
|
stage->id = sqlite3_column_int(stmt, 0);
|
||||||
sqlite3_clear_bindings(stmt);
|
sqlite3_clear_bindings(stmt);
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, "failed to save stage: %s - %d\n", sqlite3_errmsg(ctx->db),
|
fprintf(stderr, "failed to save stage: %s - %d\n", sqlite3_errmsg(ctx->db),
|
||||||
|
@ -227,7 +228,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, 1, (char *)list->name, -1, SQLITE_STATIC);
|
||||||
sqlite3_bind_text(stmt, 2, (char *)list->desc, -1, SQLITE_STATIC);
|
sqlite3_bind_text(stmt, 2, (char *)list->desc, -1, SQLITE_STATIC);
|
||||||
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
||||||
list->id = sqlite3_column_int(stmt, 1);
|
list->id = sqlite3_column_int(stmt, 0);
|
||||||
sqlite3_clear_bindings(stmt);
|
sqlite3_clear_bindings(stmt);
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),
|
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),
|
||||||
|
@ -314,7 +315,7 @@ void klist_task_save(klist *ctx, klist_task *task) {
|
||||||
if (task->target_stage)
|
if (task->target_stage)
|
||||||
sqlite3_bind_int(stmt, 5, task->target_stage);
|
sqlite3_bind_int(stmt, 5, task->target_stage);
|
||||||
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
if ((result = sqlite3_step(stmt)) == SQLITE_ROW) {
|
||||||
task->id = sqlite3_column_int(stmt, 1);
|
task->id = sqlite3_column_int(stmt, 0);
|
||||||
sqlite3_clear_bindings(stmt);
|
sqlite3_clear_bindings(stmt);
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),
|
fprintf(stderr, "failed to save list: %s - %d\n", sqlite3_errmsg(ctx->db),
|
||||||
|
|
|
@ -56,8 +56,7 @@ const char *klist_sql_get(const enum KLIST_SQL sql) {
|
||||||
return "select users.*, user_logins.local_id from users inner join "
|
return "select users.*, user_logins.local_id from users inner join "
|
||||||
"user_logins on user_logins.user_id = users.id where users.id = ?1";
|
"user_logins on user_logins.user_id = users.id where users.id = ?1";
|
||||||
case GET_USER_BY_LOCAL:
|
case GET_USER_BY_LOCAL:
|
||||||
return "select * from users inner join user_logins on user_logins.user_id "
|
return "select * from users inner join user_logins on user_logins.user_id = users.id where user_logins.local_id = ?1";
|
||||||
"= users.id where user_logins.local_id = ?1";
|
|
||||||
case GET_USERS:
|
case GET_USERS:
|
||||||
return "select * from users";
|
return "select * from users";
|
||||||
case MOD_USER_NAME:
|
case MOD_USER_NAME:
|
||||||
|
|
|
@ -32,14 +32,14 @@ void klist_deinit(klist *ctx) {
|
||||||
free(ctx);
|
free(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
klist_user_context *klist_user_context_init(klist *list) {
|
klist_user_context *klist_user_context_init() {
|
||||||
klist_user_context *ctx = malloc(sizeof(klist_user_context));
|
klist_user_context *ctx = malloc(sizeof(klist_user_context));
|
||||||
ctx->cmd = -1;
|
ctx->cmd = -1;
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
void klist_user_context_deinit(klist_user_context *ctx) { free(ctx); }
|
void klist_user_context_deinit(klist_user_context *ctx) { free(ctx); }
|
||||||
|
|
||||||
klist_list_context *klist_list_context_init(klist *list) {
|
klist_list_context *klist_list_context_init() {
|
||||||
klist_list_context *ctx = malloc(sizeof(klist_list_context));
|
klist_list_context *ctx = malloc(sizeof(klist_list_context));
|
||||||
ctx->cmd = -1;
|
ctx->cmd = -1;
|
||||||
ctx->name = NULL;
|
ctx->name = NULL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue