fix memory leaks, more printing stuff
This commit is contained in:
parent
c13b361de2
commit
d6cb8f0ce8
2 changed files with 45 additions and 26 deletions
|
@ -235,11 +235,14 @@ int klist_app_task_get(klist *ctx) {
|
|||
|
||||
int i = 0;
|
||||
for (; i < tasks_len; i++)
|
||||
free(tasks[i]);
|
||||
klist_task_deinit(tasks[i]);
|
||||
free(tasks);
|
||||
}
|
||||
} else
|
||||
klist_print(ctx, KLIST_LOG_ERROR, "list not found\n");
|
||||
klist_user_deinit(user);
|
||||
if (list)
|
||||
klist_list_deinit(list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -373,20 +373,6 @@ void klist_task_deinit(klist_task *task) {
|
|||
* printing
|
||||
*/
|
||||
|
||||
void repeat(size_t len, const char *sign) {
|
||||
int i = 0;
|
||||
for (; i < len; i++)
|
||||
printf(sign);
|
||||
}
|
||||
|
||||
size_t longest_str(char **strings, size_t strings_len) {
|
||||
size_t len = 0, i = 0;
|
||||
for (; i < strings_len; i++)
|
||||
if (strlen(strings[i]) > len)
|
||||
len = strlen(strings[i]);
|
||||
return len;
|
||||
}
|
||||
|
||||
void klist_print_user(klist *ctx, const klist_user *user) {
|
||||
printf(""
|
||||
"Name: %s\n"
|
||||
|
@ -403,17 +389,17 @@ void print_table_line(char *left, size_t cols, char *filler, size_t col_width,
|
|||
for (; j < col_width; j++)
|
||||
printf("%s", filler);
|
||||
if (i + 1 != cols)
|
||||
printf("%s", col_delim);
|
||||
printf("%s%s", filler, col_delim);
|
||||
}
|
||||
printf("%s\n", right);
|
||||
}
|
||||
|
||||
void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
||||
size_t count) {
|
||||
size_t tasks_len) {
|
||||
struct winsize w;
|
||||
int i = 0;
|
||||
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
|
||||
int width = w.ws_col > 0 ? w.ws_col : 80;
|
||||
int width = w.ws_col > 0 ? w.ws_col : 40;
|
||||
|
||||
size_t stages_len = 0;
|
||||
klist_stage **stages =
|
||||
|
@ -430,7 +416,7 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
|||
for (i = 0; i < max_stages_id; i++)
|
||||
tasks_count_per_stage[i] = 0;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
for (i = 0; i < tasks_len; i++)
|
||||
tasks_count_per_stage[tasks[i]->stage_id]++;
|
||||
|
||||
int tasks_max = 0;
|
||||
|
@ -443,25 +429,52 @@ 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 - 4 - strlen((char *)list->name); i++)
|
||||
for (i = 0; i < (width - 3) - strlen((char *)list->name); i++)
|
||||
printf(" ");
|
||||
printf("│\n");
|
||||
|
||||
// separator
|
||||
print_table_line("├", stages_len, "─", stage_col_width, "┬", "┤");
|
||||
|
||||
// stage name
|
||||
printf("│");
|
||||
for (i = 0; i < stages_len; i++) {
|
||||
int j = 0;
|
||||
printf(" %s", (char *)stages[i]->name);
|
||||
for (; j < stage_col_width - (strlen((char *)stages[i]->name) + 1); j++)
|
||||
for (; j < (stage_col_width - 1) - strlen((char *)stages[i]->name); j++)
|
||||
printf(" ");
|
||||
if (i + 1 != stages_len)
|
||||
printf(" │");
|
||||
}
|
||||
printf("│\n");
|
||||
|
||||
/*
|
||||
const char *crossings[] = { "┬", "┼", "┴" };
|
||||
const char *headers[] = { "Name", "due" };
|
||||
for (i = 0; i < 3; i++) {
|
||||
printf("%s", (i + 1) % 2 ? "├" : "│");
|
||||
int j = 0;
|
||||
for (j = 0; j < stages_len * 2; j++) {
|
||||
int k = 0, printed = 0;
|
||||
if (i == 1) {
|
||||
printf(" %s", headers[j % 2]);
|
||||
printed = strlen(headers[j % 2]) + 1;
|
||||
}
|
||||
for (; k < ((stage_col_width / 2) - 1) - printed; k++)
|
||||
printf("%s", (i + 1) % 2 ? "─" : " ");
|
||||
if (j + 1 != stages_len * 2)
|
||||
if ((i + 1) % 2)
|
||||
printf("─%s", j % 2 ? crossings[1] : crossings[i > 1]);
|
||||
else
|
||||
printf(" │");
|
||||
}
|
||||
printf("%s\n", (i + 1) % 2 ? "┤" : "│");
|
||||
}
|
||||
*/
|
||||
// separator
|
||||
print_table_line("├", stages_len, "─", stage_col_width, "┼", "┤");
|
||||
|
||||
// tasks
|
||||
int stages_idx[max_stages_id];
|
||||
for (i = 0; i < max_stages_id; i++)
|
||||
stages_idx[i] = 0;
|
||||
|
@ -471,7 +484,7 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
|||
for (; j < stages_len; j++) {
|
||||
int k = stages_idx[stages[j]->id];
|
||||
u_long printed = 0;
|
||||
for (; k < count; k++)
|
||||
for (; k < tasks_len; k++)
|
||||
if (tasks[k]->stage_id == stages[j]->id) {
|
||||
printf(" %s", (char *)tasks[k]->name);
|
||||
printed = strlen((char *)tasks[k]->name) + 1;
|
||||
|
@ -481,15 +494,18 @@ void klist_print_list(klist *ctx, klist_list *list, klist_task **tasks,
|
|||
int l = 0;
|
||||
for (; l < stage_col_width - printed; l++)
|
||||
printf(" ");
|
||||
if (j + 1 != stages_len)
|
||||
if (j + 1 != stages_len) {
|
||||
printf(" │");
|
||||
}
|
||||
}
|
||||
printf("│\n");
|
||||
}
|
||||
|
||||
// end line
|
||||
print_table_line("╰", stages_len, "─", stage_col_width, "┴", "╯");
|
||||
|
||||
// cleanup
|
||||
for (i = 0; i < stages_len; i++)
|
||||
free(stages[i]);
|
||||
klist_stage_deinit(stages[i]);
|
||||
free(stages);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue