From e1c298ae50be9df1c8566d688563b5941d267864 Mon Sep 17 00:00:00 2001 From: nova Date: Sat, 23 Aug 2025 23:19:11 +0200 Subject: [PATCH] removal of global file_current --- dir.c | 13 +------------ interactions.c | 44 +++++++++++++++++++++----------------------- threading.c | 43 +++++++++++++++++-------------------------- 3 files changed, 39 insertions(+), 61 deletions(-) diff --git a/dir.c b/dir.c index e5ed483..63ba4db 100644 --- a/dir.c +++ b/dir.c @@ -320,19 +320,8 @@ void update_selected_file(){ if (selected_file_current != selected_file_last) { mid_content[selected_file_last].status &= ~FILE_STATUS_HOVER; } - selected_file_last = selected_file_current; - - free(file_current->file_name); - file_current->file_name = malloc(strlen(mid_content[selected_file_current].file_name)+1); - strcpy(file_current->file_name, mid_content[selected_file_current].file_name); - file_current->file_name[strlen(mid_content[selected_file_current].file_name)] = '\0'; - file_current->file_size = mid_content[selected_file_current].file_size; - file_current->file_type = mid_content[selected_file_current].file_type; - file_current->color_pair = mid_content[selected_file_current].color_pair; - file_current->permissions = mid_content[selected_file_current].permissions; - mid_content[selected_file_current].status |= FILE_STATUS_HOVER; - file_current->status = mid_content[selected_file_current].status; + selected_file_last = selected_file_current; } void dir_set_selected_file_current(unsigned long selected_file_current){ current_dir->selected_file_current = selected_file_current; diff --git a/interactions.c b/interactions.c index cc2ee27..db03413 100644 --- a/interactions.c +++ b/interactions.c @@ -20,7 +20,6 @@ extern pthread_mutex_t mutex_mid; extern file *mid_content; extern file *lft_content; extern file *rgt_content; -extern volatile file *file_current; extern unsigned int terminal_height; extern unsigned int terminal_width; @@ -144,9 +143,9 @@ int read_string(WINDOW *win, int y, int x, char *str){ err = 0; break; } else if (ch == '\t') { /* tab */ - memcpy(str + pass, file_current->file_name, strlen(file_current->file_name)); - mvwaddstr(win, y, x +pass, file_current->file_name); - pass += strlen(file_current->file_name); + memcpy(str + pass, mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name)); + mvwaddstr(win, y, x +pass, mid_content[selected_file_current].file_name); + pass += strlen(mid_content[selected_file_current].file_name); } else if (ch == 127) { /* backspace */ if (pass > 0) { pass--; @@ -188,7 +187,6 @@ void toggle_selection(){ pthread_mutex_lock(&mutex_selection); pthread_mutex_lock(&mutex_mid); mid_content[selected_file_current].status ^= FILE_STATUS_SELECTED; - file_current->status ^= FILE_STATUS_SELECTED; status |= (STATUS_UPDATE_SCREEN_MASK); pthread_mutex_unlock(&mutex_mid); pthread_mutex_unlock(&mutex_selection); @@ -239,8 +237,8 @@ void move_left(int passes){ status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY); } void move_right(){ - if (file_current->file_type == FILE_TYPE_DIR || file_current->file_type == FILE_TYPE_SYMLINK) { - if (chdir(file_current->file_name) != 0) { + if (mid_content[selected_file_current].file_type == FILE_TYPE_DIR || mid_content[selected_file_current].file_type == FILE_TYPE_SYMLINK) { + if (chdir(mid_content[selected_file_current].file_name) != 0) { FAIL("move_right", "unhandled error of chdir"); } else { selected_file_current = dir_get_selected_file_current(); @@ -248,12 +246,12 @@ void move_right(){ } else { unsigned long i = 0; char match = 0; - char *mime = get_mimetype(file_current->file_name); - char *extension = strrchr(file_current->file_name, '.'); + char *mime = get_mimetype(mid_content[selected_file_current].file_name); + char *extension = strrchr(mid_content[selected_file_current].file_name, '.'); for (i = 0; i < file_extension_default_count; i++) { if (strstr(extension, file_extension_default_cmd[i].file_extension)) { char *cmd = concat(file_extension_default_cmd[i].command, " ./\""); - cmd = concat(cmd, file_current->file_name); + cmd = concat(cmd, mid_content[selected_file_current].file_name); cmd = concat(cmd, "\""); @@ -271,7 +269,7 @@ void move_right(){ if (strstr(mime, mimetype_default_cmd[i].mimetype)) { char *cmd = concat(mimetype_default_cmd[i].command, " ./\""); - cmd = concat(cmd, file_current->file_name); + cmd = concat(cmd, mid_content[selected_file_current].file_name); cmd = concat(cmd, "\""); btm_buffer = malloc(strlen(cmd)); @@ -315,7 +313,7 @@ void jump_top(){ } void open_with(){ - btm_buffer = concat("open \"", file_current->file_name); + btm_buffer = concat("open \"", mid_content[selected_file_current].file_name); btm_buffer = concat(btm_buffer, "\" with:"); status |= STATUS_UPDATE_SCREEN_0; @@ -336,7 +334,7 @@ void open_with(){ if (!err) { char *cmd = concat(str, " ./\""); - cmd = concat(cmd, file_current->file_name); + cmd = concat(cmd, mid_content[selected_file_current].file_name); cmd = concat(cmd, "\""); if (system(cmd) == -1) { @@ -355,7 +353,7 @@ void open_with(){ void rename_hovered(){ - btm_buffer = concat("rename \"", file_current->file_name); + btm_buffer = concat("rename \"", mid_content[selected_file_current].file_name); btm_buffer = concat(btm_buffer, "\" to:"); status |= STATUS_UPDATE_SCREEN_0; @@ -375,7 +373,7 @@ void rename_hovered(){ if (!err) { - char *cmd = concat("mv ./\"", file_current->file_name); + char *cmd = concat("mv ./\"", mid_content[selected_file_current].file_name); cmd = concat(cmd, "\" ./\""); cmd = concat(cmd, str); cmd = concat(cmd, "\""); @@ -409,7 +407,7 @@ void delete(){ if (hits) { btm_buffer = concat("delete:", file_str); } else { - btm_buffer = concat("delete: \"", file_current->file_name); + btm_buffer = concat("delete: \"", mid_content[selected_file_current].file_name); btm_buffer = concat(btm_buffer, "\""); } @@ -448,13 +446,13 @@ void delete(){ btm_buffer = concat("deleted: ", file_str); } else { free(btm_buffer); - error = remove(file_current->file_name); + error = remove(mid_content[selected_file_current].file_name); if (error != 0) { mvaddstr(terminal_height-2, 0, "could not delete: " ); mvaddstr(terminal_height-2, strlen("could not delete: "), mid_content[i].file_name); btm_buffer = " "; } else { - btm_buffer = concat("deleted: \"", file_current->file_name); + btm_buffer = concat("deleted: \"", mid_content[selected_file_current].file_name); btm_buffer = concat(btm_buffer, "\""); } @@ -625,7 +623,7 @@ void cmd_on_selected(int passes, int index){ btm_buffer = concat(key_binding[index].black_magic, file_str); } else { btm_buffer = concat(key_binding[index].black_magic, "\""); - btm_buffer = concat(btm_buffer, file_current->file_name); + btm_buffer = concat(btm_buffer, mid_content[selected_file_current].file_name); btm_buffer = concat(btm_buffer, "\""); } @@ -667,7 +665,7 @@ void cmd_on_selected(int passes, int index){ free(btm_buffer); free(cmd); cmd = concat((char*)key_binding[index].black_magic, " \""); - cmd = concat(cmd, file_current->file_name); + cmd = concat(cmd, mid_content[selected_file_current].file_name); cmd = concat(cmd, "\""); if (system(cmd) != 0) { /*do nothing*/ @@ -787,9 +785,9 @@ void search(){ if (ch == '\n') { break; } else if (ch == '\t') { /* tab */ - memcpy(search_buffer, file_current->file_name, strlen(file_current->file_name)); - mvwaddstr(win_b, local_height-1, pass, file_current->file_name); - pass = strlen(file_current->file_name); + memcpy(search_buffer, mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name)); + mvwaddstr(win_b, local_height-1, pass, mid_content[selected_file_current].file_name); + pass = strlen(mid_content[selected_file_current].file_name); } else if (ch == 127) { /* backspace */ mvwdelch(win_b, local_height-1, 1); wdelch(win_b); diff --git a/threading.c b/threading.c index 3796fbe..7e8567b 100644 --- a/threading.c +++ b/threading.c @@ -32,7 +32,6 @@ char *rgt_buffer; /* used for file previews, unlike rgt_content, which is used f char *btm_buffer; char *top_buffer; /* current path */ -volatile file *file_current; unsigned long rgt_file_count = 0; @@ -49,7 +48,6 @@ extern unsigned int status; void *thread_mid(void *data){ - unsigned int local_status = *(unsigned int*)data; while(!(status & STATUS_QUIT_PROGRAM)){ pthread_mutex_lock(&mutex_mid); @@ -63,7 +61,7 @@ void *thread_mid(void *data){ } else { - if (local_status & STATUS_RELOAD_DIRECTORY) { + if (status & STATUS_RELOAD_DIRECTORY) { unsigned long i = 0; for (i = 0; i < mid_file_count; i++) { free(mid_content[i].file_name); @@ -84,12 +82,6 @@ void *thread_mid(void *data){ mid_content->color_pair = 0; mid_content->file_name = "empty dir"; - file_current->file_name = mid_content->file_name; - file_current->file_size = mid_content->file_size; - file_current->file_type = mid_content->file_type; - file_current->color_pair = mid_content->color_pair; - file_current->permissions = mid_content->permissions; - file_current->status = mid_content->status; mid_file_count = 0; pthread_cond_signal(&cond_rgt); @@ -170,7 +162,9 @@ void *thread_rgt(void *data){ unsigned long i = 0; for (i = 0; i < rgt_file_count; i++) { - free(rgt_content[i].file_name); + if (rgt_content[i].file_name) { + free(rgt_content[i].file_name); + } } free(rgt_content); @@ -187,7 +181,9 @@ void *thread_rgt(void *data){ unsigned long i = 0; for (i = 0; i < rgt_file_count; i++) { - free(rgt_content[i].file_name); + if (rgt_content[i].file_name) { + free(rgt_content[i].file_name); + } } free(rgt_content); rgt_file_count = 0; @@ -246,16 +242,16 @@ void *thread_btm(void *data){ int buffer_width = terminal_width; btm_buffer = malloc(buffer_width); memset(btm_buffer, 0, buffer_width); - btm_buffer[0] = (S_ISDIR(file_current->permissions)) ? 'd' : '-'; - btm_buffer[1] = (file_current->permissions & S_IRUSR) ? 'r' : '-'; - btm_buffer[2] = (file_current->permissions & S_IWUSR) ? 'w' : '-'; - btm_buffer[3] = (file_current->permissions & S_IXUSR) ? 'x' : '-'; - btm_buffer[4] = (file_current->permissions & S_IRGRP) ? 'r' : '-'; - btm_buffer[5] = (file_current->permissions & S_IWGRP) ? 'w' : '-'; - btm_buffer[6] = (file_current->permissions & S_IXGRP) ? 'x' : '-'; - btm_buffer[7] = (file_current->permissions & S_IROTH) ? 'r' : '-'; - btm_buffer[8] = (file_current->permissions & S_IWOTH) ? 'w' : '-'; - btm_buffer[9] = (file_current->permissions & S_IXOTH) ? 'x' : '-'; + btm_buffer[0] = (S_ISDIR(mid_content[selected_file_current].permissions)) ? 'd' : '-'; + btm_buffer[1] = (mid_content[selected_file_current].permissions & S_IRUSR) ? 'r' : '-'; + btm_buffer[2] = (mid_content[selected_file_current].permissions & S_IWUSR) ? 'w' : '-'; + btm_buffer[3] = (mid_content[selected_file_current].permissions & S_IXUSR) ? 'x' : '-'; + btm_buffer[4] = (mid_content[selected_file_current].permissions & S_IRGRP) ? 'r' : '-'; + btm_buffer[5] = (mid_content[selected_file_current].permissions & S_IWGRP) ? 'w' : '-'; + btm_buffer[6] = (mid_content[selected_file_current].permissions & S_IXGRP) ? 'x' : '-'; + btm_buffer[7] = (mid_content[selected_file_current].permissions & S_IROTH) ? 'r' : '-'; + btm_buffer[8] = (mid_content[selected_file_current].permissions & S_IWOTH) ? 'w' : '-'; + btm_buffer[9] = (mid_content[selected_file_current].permissions & S_IXOTH) ? 'x' : '-'; pthread_mutex_unlock(&mutex_btm); @@ -285,11 +281,6 @@ void threading_init(){ rgt_content->file_name = malloc(sizeof(char)); rgt_content->file_name[0] = '\0'; - file_current = malloc(sizeof(file)); - file_current->file_type = 0; - file_current->file_size = 0; - file_current->file_name = malloc(sizeof(char)); - file_current->file_name[0] = '\0'; volatile char vol; /* needed to make sure higher optimization steps dont move these around */ vol = pthread_mutex_init(&mutex_top, NULL);