printing and config parsing fixes
This commit is contained in:
parent
95e0ebc073
commit
5a8e3a073a
4 changed files with 36 additions and 28 deletions
|
@ -54,9 +54,10 @@ char *klist_config_name(char *name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void klist_config_parse(klist_config *ctx, FILE *config) {
|
void klist_config_parse(klist_config *ctx, FILE *config) {
|
||||||
fseek(config, 0, SEEK_END);
|
fseek(config, 0, SEEK_SET);
|
||||||
int c;
|
int c;
|
||||||
char *key = NULL, *val = NULL;
|
char *key = NULL, *val = NULL;
|
||||||
|
int key_len = 0, val_len = 0;
|
||||||
bool found_key = false, ignore_line = false;
|
bool found_key = false, ignore_line = false;
|
||||||
while ((c = fgetc(config)) != EOF) {
|
while ((c = fgetc(config)) != EOF) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
@ -75,8 +76,8 @@ void klist_config_parse(klist_config *ctx, FILE *config) {
|
||||||
}
|
}
|
||||||
free(key);
|
free(key);
|
||||||
free(val);
|
free(val);
|
||||||
key = NULL;
|
key_len = 0, val_len = 0;
|
||||||
val = NULL;
|
key = NULL, val = NULL;
|
||||||
break;
|
break;
|
||||||
case '=':
|
case '=':
|
||||||
if (!found_key)
|
if (!found_key)
|
||||||
|
@ -86,27 +87,32 @@ void klist_config_parse(klist_config *ctx, FILE *config) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case '#':
|
||||||
if (!key && !val && c == '#')
|
if (!key && !val)
|
||||||
ignore_line = true;
|
ignore_line = true;
|
||||||
|
default:
|
||||||
if (ignore_line)
|
if (ignore_line)
|
||||||
continue;
|
continue;
|
||||||
if (found_key) {
|
if (found_key) {
|
||||||
char *_val = val ? realloc(val, (strlen(val) + 2) * sizeof(char))
|
if (val)
|
||||||
: malloc(2 * sizeof(char));
|
val = realloc(val, ++val_len * sizeof(char));
|
||||||
if (_val) {
|
else {
|
||||||
val = _val;
|
val_len = 2;
|
||||||
val[strlen(val) - 2] = (char)c;
|
val = malloc(val_len * sizeof(char));
|
||||||
val[strlen(val) - 1] = '\0';
|
|
||||||
}
|
}
|
||||||
|
val[val_len - 2] = (char)c;
|
||||||
|
val[val_len - 1] = '\0';
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
char *_key = key ? realloc(key, (strlen(key) + 2) * sizeof(char))
|
if (key)
|
||||||
: malloc(2 * sizeof(char));
|
key = realloc(key, ++key_len * sizeof(char));
|
||||||
if (_key) {
|
else {
|
||||||
key = _key;
|
key_len = 2;
|
||||||
key[strlen(key) - 2] = (char)c;
|
key = malloc(key_len * sizeof(char));
|
||||||
key[strlen(key) - 1] = '\0';
|
|
||||||
}
|
}
|
||||||
|
key[key_len - 2] = (char)c;
|
||||||
|
key[key_len - 1] = '\0';
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -188,12 +188,12 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "aedgl:n:s:")) != -1)
|
while ((opt = getopt(argc, argv, "aedgl:n:s:")) != -1)
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
/*case 'a':
|
case 'a':
|
||||||
task_ctx->cmd = TASK_ADD;
|
task_ctx->cmd = TASK_ADD;
|
||||||
break;
|
break;
|
||||||
case 'e':
|
case 'e':
|
||||||
task_ctx->cmd = TASK_EDIT;
|
task_ctx->cmd = TASK_EDIT;
|
||||||
break;*/
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
task_ctx->cmd = TASK_DELETE;
|
task_ctx->cmd = TASK_DELETE;
|
||||||
break;
|
break;
|
||||||
|
@ -219,6 +219,7 @@ void setup(klist *ctx, int argc, char **argv) {
|
||||||
"-d\tdelete a task"
|
"-d\tdelete a task"
|
||||||
"Not providing a parameter prints all tasks of a list.");
|
"Not providing a parameter prints all tasks of a list.");
|
||||||
}
|
}
|
||||||
|
if (!task_ctx->cmd) task_ctx->cmd = TASK_ADD;
|
||||||
ctx->cmd_ctx = task_ctx;
|
ctx->cmd_ctx = task_ctx;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -8,7 +8,7 @@ int klist_app_user_get(klist *ctx) {
|
||||||
klist_user *user = klist_user_get_by_local(ctx, getuid());
|
klist_user *user = klist_user_get_by_local(ctx, getuid());
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
printf("User: %p\nID: %lu\n", user->name, user->id);
|
printf("User: %s\nID: %lu\n", (char*)user->name, user->id);
|
||||||
size_t lists_len = 0;
|
size_t lists_len = 0;
|
||||||
klist_list **lists = klist_list_get_all_by_user(ctx, user->id, &lists_len);
|
klist_list **lists = klist_list_get_all_by_user(ctx, user->id, &lists_len);
|
||||||
printf("Lists: %lu\n", lists_len);
|
printf("Lists: %lu\n", lists_len);
|
||||||
|
|
|
@ -405,15 +405,13 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
||||||
klist_stage **stages =
|
klist_stage **stages =
|
||||||
klist_stage_get_all_for_list(ctx, list->id, &stages_len);
|
klist_stage_get_all_for_list(ctx, list->id, &stages_len);
|
||||||
|
|
||||||
size_t stage_col_width = (width - 2 - (stages_len - 1)) / stages_len;
|
|
||||||
|
|
||||||
int max_stages_id = 0;
|
int max_stages_id = 0;
|
||||||
for (i = 0; i < stages_len; i++)
|
for (i = 0; i < stages_len; i++)
|
||||||
if (stages[i]->id > max_stages_id)
|
if (stages[i]->id > max_stages_id)
|
||||||
max_stages_id = stages[i]->id + 1;
|
max_stages_id = stages[i]->id;
|
||||||
|
|
||||||
int tasks_count_per_stage[max_stages_id];
|
int tasks_count_per_stage[max_stages_id + 1];
|
||||||
for (i = 0; i < max_stages_id; i++)
|
for (i = 0; i < max_stages_id + 1; i++)
|
||||||
tasks_count_per_stage[i] = 0;
|
tasks_count_per_stage[i] = 0;
|
||||||
|
|
||||||
u_long task_length = 0, max_task_length = 0;
|
u_long task_length = 0, max_task_length = 0;
|
||||||
|
@ -423,7 +421,9 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
||||||
if (task_length > max_task_length)
|
if (task_length > max_task_length)
|
||||||
max_task_length = task_length;
|
max_task_length = task_length;
|
||||||
}
|
}
|
||||||
width = max_task_length * stages_len;
|
u_int content_width = (int)((double)max_task_length * 1.6 * (double)stages_len);
|
||||||
|
if (content_width) width = content_width;
|
||||||
|
size_t stage_col_width = (width - 3 - (stages_len - 1)) / stages_len;
|
||||||
|
|
||||||
int tasks_max = 0;
|
int tasks_max = 0;
|
||||||
for (i = 0; i < max_stages_id; i++) {
|
for (i = 0; i < max_stages_id; i++) {
|
||||||
|
@ -436,7 +436,7 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
||||||
// list name
|
// list name
|
||||||
printf("│");
|
printf("│");
|
||||||
printf(" %s", (char *)list->name);
|
printf(" %s", (char *)list->name);
|
||||||
for (i = 0; i < (width - 3) - strlen((char *)list->name); i++)
|
for (i = 0; i < (stages_len * stage_col_width) - (strlen((char *)list->name + 1)); i++)
|
||||||
printf(" ");
|
printf(" ");
|
||||||
printf("│\n");
|
printf("│\n");
|
||||||
|
|
||||||
|
@ -479,6 +479,7 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
// separator
|
// separator
|
||||||
|
if (tasks_len)
|
||||||
print_table_line("├", stages_len, "─", stage_col_width, "┼", "┤");
|
print_table_line("├", stages_len, "─", stage_col_width, "┼", "┤");
|
||||||
|
|
||||||
// tasks
|
// tasks
|
||||||
|
|
Loading…
Add table
Reference in a new issue