general stability improvements

This commit is contained in:
nova
2025-07-23 19:47:37 +02:00
parent 6daeaebb5a
commit a99a519834
7 changed files with 68 additions and 64 deletions

View File

@@ -145,12 +145,13 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
}
void print_dir(WINDOW *win, char print_info, unsigned long *line_width, unsigned long *dir_file_count, file *dir_content){
void print_dir(WINDOW *win, char print_info, unsigned long *dir_file_count, file *dir_content){
/* i am not proud of this function */
unsigned long line_width = getmaxx(win);
char *bg = malloc(*line_width);
memset(bg, ' ', *line_width);
bg[*line_width] = '\0';
char *bg = malloc(line_width+1);
memset(bg, ' ', line_width);
bg[line_width] = '\0';
unsigned long i = 0;
float file_size;
@@ -159,7 +160,7 @@ void print_dir(WINDOW *win, char print_info, unsigned long *line_width, unsigned
char is_selected = 0;
static const char sizes[6] = { 'B', 'K', 'M', 'G', 'T', 'P' };
unsigned long offset_back;
unsigned long offset_back = 0;
unsigned long offset_front = 2;
if (*dir_file_count > 9) {
offset_front = (snprintf(NULL, 0, "%ld", *dir_file_count)) + 1;
@@ -178,11 +179,11 @@ void print_dir(WINDOW *win, char print_info, unsigned long *line_width, unsigned
}
size_char = sizes[size_index-1];
if (dir_content[i].file_type == FILE_TYPE_DIR || dir_content[i].file_type == FILE_TYPE_SYMLINK) {
offset_back = *line_width - (snprintf(NULL,0,"%ld", dir_content[i].file_size) + 1);
offset_back = line_width - (snprintf(NULL,0,"%ld", dir_content[i].file_size) + 1);
} else if (size_char =='B') {
offset_back = *line_width - (snprintf(NULL,0,"%0.0lf %c", printed_size, size_char) + 1);
offset_back = line_width - (snprintf(NULL,0,"%0.0lf %c", printed_size, size_char) + 1);
} else {
offset_back = *line_width - (snprintf(NULL,0,"%0.2lf %c", printed_size, size_char) + 1);
offset_back = line_width - (snprintf(NULL,0,"%0.2lf %c", printed_size, size_char) + 1);
}
}
@@ -224,19 +225,21 @@ void print_dir(WINDOW *win, char print_info, unsigned long *line_width, unsigned
file_name[strlen(extension)] = '\0';
}
} else {
file_name = malloc(dir_content[i].file_name_width);
strcpy(file_name, dir_content[i].file_name);
file_name = malloc(dir_content[i].file_name_width+1);
memcpy(file_name, dir_content[i].file_name, dir_content[i].file_name_width);
file_name[dir_content[i].file_name_width] = '\0';
}
} else {
file_name = malloc(dir_content[i].file_name_width);
strcpy(file_name, dir_content[i].file_name);
file_name = malloc(dir_content[i].file_name_width+1);
memcpy(file_name, dir_content[i].file_name, dir_content[i].file_name_width);
file_name[dir_content[i].file_name_width] = '\0';
}
mvwaddstr(win, i, 0, bg);
if(print_info) {
mvwprintw(win, i, 0, "%ld", i);
mvwaddnstr(win, i, offset_front+is_selected, file_name, *line_width-offset_front-is_selected-2);
mvwaddnstr(win, i, offset_front+is_selected, file_name, line_width-offset_front-is_selected-2);
free(file_name);
if (dir_content[i].file_type == FILE_TYPE_DIR || dir_content[i].file_type == FILE_TYPE_SYMLINK) {
@@ -247,7 +250,7 @@ void print_dir(WINDOW *win, char print_info, unsigned long *line_width, unsigned
mvwprintw(win, i, offset_back, "%0.2lf %c", printed_size, size_char);
}
} else {
mvwaddnstr(win, i, 0, file_name, *line_width);
mvwaddnstr(win, i, 0, file_name, line_width);
free(file_name);
}