mirror of
https://gittea.dev/nova/th.git
synced 2025-10-21 18:30:15 -04:00
now accounting for hardlinks & refactored sorting
This commit is contained in:
18
dir.c
18
dir.c
@@ -91,9 +91,15 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
||||
dir_content[i].color_pair = COLOR_DIR;
|
||||
dir_content[i].file_size = get_dir_size(full_path);
|
||||
} else if (S_ISLNK(file->st_mode)) {
|
||||
dir_content[i].file_type = FILE_TYPE_SYMLINK;
|
||||
dir_content[i].color_pair = COLOR_SYMLINK;
|
||||
dir_content[i].file_size = get_dir_size(full_path);
|
||||
stat(full_path, file);
|
||||
if (S_ISDIR(file->st_mode)) {
|
||||
dir_content[i].file_type = FILE_TYPE_DIR | FILE_TYPE_SYMLINK;
|
||||
dir_content[i].color_pair = COLOR_SYMLINK;
|
||||
dir_content[i].file_size = get_dir_size(full_path);
|
||||
} else {
|
||||
dir_content[i].file_type = FILE_TYPE_REGULAR | FILE_TYPE_SYMLINK;
|
||||
dir_content[i].color_pair = COLOR_SYMLINK;
|
||||
}
|
||||
} else if (file->st_mode & S_IXUSR) {
|
||||
dir_content[i].file_type = FILE_TYPE_EXEC;
|
||||
dir_content[i].color_pair = COLOR_EXEC;
|
||||
@@ -239,7 +245,7 @@ void print_dir(WINDOW *win, char print_info, unsigned long *dir_file_count, file
|
||||
} while (file_size > 1 && size_index < size_unit_count);
|
||||
size_char = size_unit[(unsigned)size_index];
|
||||
|
||||
if (dir_content[i].file_type == FILE_TYPE_DIR || dir_content[i].file_type == FILE_TYPE_SYMLINK) {
|
||||
if (dir_content[i].file_type &= FILE_TYPE_DIR) {
|
||||
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);
|
||||
@@ -300,7 +306,7 @@ void print_dir(WINDOW *win, char print_info, unsigned long *dir_file_count, file
|
||||
mvwaddnstr(win, i-offset_vertical, 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) {
|
||||
if (dir_content[i].file_type &= FILE_TYPE_DIR) {
|
||||
mvwprintw(win, i-offset_vertical, offset_back, "%ld", dir_content[i].file_size);
|
||||
}else if (size_char =='B') {
|
||||
mvwprintw(win, i-offset_vertical, offset_back, "%0.0lf %c", printed_size, size_char);
|
||||
@@ -381,7 +387,7 @@ void dir_init(){
|
||||
}
|
||||
|
||||
char recursive_delete(file current_file){
|
||||
if (current_file.file_type & (FILE_TYPE_SYMLINK | FILE_TYPE_DIR)) {
|
||||
if (current_file.file_type & FILE_TYPE_DIR) {
|
||||
unsigned int file_modifiers_tmp = file_modifiers;
|
||||
file_modifiers |= FILE_MODIFIERS_HIDDEN_FILES;
|
||||
unsigned long current_file_count = get_dir_size(current_file.file_name);
|
||||
|
Reference in New Issue
Block a user