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) {
|
||||
fseek(config, 0, SEEK_END);
|
||||
fseek(config, 0, SEEK_SET);
|
||||
int c;
|
||||
char *key = NULL, *val = NULL;
|
||||
int key_len = 0, val_len = 0;
|
||||
bool found_key = false, ignore_line = false;
|
||||
while ((c = fgetc(config)) != EOF) {
|
||||
switch (c) {
|
||||
|
@ -75,8 +76,8 @@ void klist_config_parse(klist_config *ctx, FILE *config) {
|
|||
}
|
||||
free(key);
|
||||
free(val);
|
||||
key = NULL;
|
||||
val = NULL;
|
||||
key_len = 0, val_len = 0;
|
||||
key = NULL, val = NULL;
|
||||
break;
|
||||
case '=':
|
||||
if (!found_key)
|
||||
|
@ -86,27 +87,32 @@ void klist_config_parse(klist_config *ctx, FILE *config) {
|
|||
exit(1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (!key && !val && c == '#')
|
||||
case '#':
|
||||
if (!key && !val)
|
||||
ignore_line = true;
|
||||
default:
|
||||
if (ignore_line)
|
||||
continue;
|
||||
if (found_key) {
|
||||
char *_val = val ? realloc(val, (strlen(val) + 2) * sizeof(char))
|
||||
: malloc(2 * sizeof(char));
|
||||
if (_val) {
|
||||
val = _val;
|
||||
val[strlen(val) - 2] = (char)c;
|
||||
val[strlen(val) - 1] = '\0';
|
||||
if (val)
|
||||
val = realloc(val, ++val_len * sizeof(char));
|
||||
else {
|
||||
val_len = 2;
|
||||
val = malloc(val_len * sizeof(char));
|
||||
}
|
||||
val[val_len - 2] = (char)c;
|
||||
val[val_len - 1] = '\0';
|
||||
|
||||
} else {
|
||||
char *_key = key ? realloc(key, (strlen(key) + 2) * sizeof(char))
|
||||
: malloc(2 * sizeof(char));
|
||||
if (_key) {
|
||||
key = _key;
|
||||
key[strlen(key) - 2] = (char)c;
|
||||
key[strlen(key) - 1] = '\0';
|
||||
if (key)
|
||||
key = realloc(key, ++key_len * sizeof(char));
|
||||
else {
|
||||
key_len = 2;
|
||||
key = malloc(key_len * sizeof(char));
|
||||
}
|
||||
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)
|
||||
switch (opt) {
|
||||
/*case 'a':
|
||||
case 'a':
|
||||
task_ctx->cmd = TASK_ADD;
|
||||
break;
|
||||
case 'e':
|
||||
task_ctx->cmd = TASK_EDIT;
|
||||
break;*/
|
||||
break;
|
||||
case 'd':
|
||||
task_ctx->cmd = TASK_DELETE;
|
||||
break;
|
||||
|
@ -219,6 +219,7 @@ void setup(klist *ctx, int argc, char **argv) {
|
|||
"-d\tdelete a task"
|
||||
"Not providing a parameter prints all tasks of a list.");
|
||||
}
|
||||
if (!task_ctx->cmd) task_ctx->cmd = TASK_ADD;
|
||||
ctx->cmd_ctx = task_ctx;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -8,7 +8,7 @@ int klist_app_user_get(klist *ctx) {
|
|||
klist_user *user = klist_user_get_by_local(ctx, getuid());
|
||||
|
||||
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;
|
||||
klist_list **lists = klist_list_get_all_by_user(ctx, user->id, &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_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;
|
||||
for (i = 0; i < stages_len; i++)
|
||||
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];
|
||||
for (i = 0; i < max_stages_id; i++)
|
||||
int tasks_count_per_stage[max_stages_id + 1];
|
||||
for (i = 0; i < max_stages_id + 1; i++)
|
||||
tasks_count_per_stage[i] = 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)
|
||||
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;
|
||||
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
|
||||
printf("│");
|
||||
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("│\n");
|
||||
|
||||
|
@ -479,6 +479,7 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
|||
}
|
||||
*/
|
||||
// separator
|
||||
if (tasks_len)
|
||||
print_table_line("├", stages_len, "─", stage_col_width, "┼", "┤");
|
||||
|
||||
// tasks
|
||||
|
|
Loading…
Add table
Reference in a new issue