|
|
|
|
@@ -48,6 +48,7 @@ yank yank_files = { 0 };
|
|
|
|
|
|
|
|
|
|
int read_string(WINDOW *win, int y, int x, char *str);
|
|
|
|
|
extern void render_pass();
|
|
|
|
|
void window_btm(WINDOW *win, char force_render);
|
|
|
|
|
extern int (*order_func)();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -236,7 +237,7 @@ void move_right(){
|
|
|
|
|
if (mid_content->file_name[0] == '\0') {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (mid_content[selected_file_current].file_type &= FILE_TYPE_DIR) {
|
|
|
|
|
if ((mid_content[selected_file_current].file_type & FILE_TYPE_DIR) == FILE_TYPE_DIR) {
|
|
|
|
|
if (chdir(mid_content[selected_file_current].file_name) != 0) {
|
|
|
|
|
FAIL("move_right", "unhandled error of chdir");
|
|
|
|
|
} else {
|
|
|
|
|
@@ -272,9 +273,7 @@ void move_right(){
|
|
|
|
|
char *cmd = concat(mimetype_default_cmd[i].command, " ./\"");
|
|
|
|
|
cmd = concat(cmd, mid_content[selected_file_current].file_name);
|
|
|
|
|
cmd = concat(cmd, "\"");
|
|
|
|
|
btm_buffer = malloc(strlen(cmd));
|
|
|
|
|
|
|
|
|
|
strcpy(btm_buffer, cmd-1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (system(cmd) == -1) {
|
|
|
|
|
@@ -325,26 +324,25 @@ void jump_top(){
|
|
|
|
|
void open_with(){
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
btm_buffer = concat("open \"", mid_content[selected_file_current].file_name);
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\" with:");
|
|
|
|
|
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
render_pass();
|
|
|
|
|
unsigned long local_height;
|
|
|
|
|
local_height = getmaxy(win_b);
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO(2025-06-22T01:24:36) fix fixed buffer size */
|
|
|
|
|
char *str = malloc(255);
|
|
|
|
|
memset(str, ' ', 255);
|
|
|
|
|
int err = read_string(win_b, local_height - 1, 0 , str);
|
|
|
|
|
int err = read_string(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION - 1, 0 , str);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!err) {
|
|
|
|
|
if (err == 0) {
|
|
|
|
|
char *cmd = concat(str, " ./\"");
|
|
|
|
|
cmd = concat(cmd, mid_content[selected_file_current].file_name);
|
|
|
|
|
cmd = concat(cmd, "\"");
|
|
|
|
|
@@ -356,39 +354,34 @@ void open_with(){
|
|
|
|
|
if (system(cmd) == -1) {
|
|
|
|
|
FAIL("open_with", "creating subcommand failed unhandled");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = cmd;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
free(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void rename_hovered(){
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
btm_buffer = concat("rename \"", mid_content[selected_file_current].file_name);
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\" to:");
|
|
|
|
|
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
unsigned long local_height;
|
|
|
|
|
local_height = getmaxy(win_b);
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
/* TODO(2025-06-22T01:24:30) fix fixed buffer size */
|
|
|
|
|
char *str = malloc(255);
|
|
|
|
|
memset(str, ' ', 255);
|
|
|
|
|
int err = read_string(win_b, local_height - 1, 0, str);
|
|
|
|
|
int err = read_string(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION - 1, 0, str);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!err) {
|
|
|
|
|
@@ -402,17 +395,21 @@ void rename_hovered(){
|
|
|
|
|
};
|
|
|
|
|
btm_buffer = cmd;
|
|
|
|
|
}
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
free(str);
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
free(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void delete(){
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
|
|
|
|
|
unsigned int i = 0;
|
|
|
|
|
unsigned int hits = 0;
|
|
|
|
|
char *file_str = " ";
|
|
|
|
|
@@ -425,32 +422,49 @@ void delete(){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (hits) {
|
|
|
|
|
btm_buffer = concat("delete:", file_str);
|
|
|
|
|
} else {
|
|
|
|
|
btm_buffer = concat("delete: \"", mid_content[selected_file_current].file_name);
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\"");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
btm_buffer = concat(btm_buffer, "?");
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\n\n");
|
|
|
|
|
btm_buffer = concat(btm_buffer, "(y/N)");
|
|
|
|
|
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
if (strlen(file_str) < (BTM_WINDOW_HEIGHT_ON_STR_INTERACTION-1) * (terminal_width/3)) {
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
btm_buffer = malloc(BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * (terminal_width/3));
|
|
|
|
|
memset(btm_buffer, ' ', (BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * (terminal_width/3)));
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
memcpy(btm_buffer, "delete: ",strlen("delete: "));
|
|
|
|
|
if (hits) {
|
|
|
|
|
memcpy(btm_buffer + strlen("delete: "), file_str, strlen(file_str));
|
|
|
|
|
} else {
|
|
|
|
|
btm_buffer[strlen("delete: ")] = '"';
|
|
|
|
|
memcpy(btm_buffer + strlen("delete: ") + sizeof(char), mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name)-1);
|
|
|
|
|
btm_buffer[strlen("delete: ") + sizeof(char) + strlen(mid_content[selected_file_current].file_name)] = '"';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
memcpy(btm_buffer + (BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * (terminal_width/3) - (terminal_width/3)) , "(y/N)", strlen("(y/N)"));
|
|
|
|
|
btm_buffer[BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * (terminal_width/3)] = '\0';
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width); /*since more data is present than can be represented using div3, we do the uncool thing)*/
|
|
|
|
|
btm_buffer = malloc(BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width);
|
|
|
|
|
memset(btm_buffer, ' ', BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width);
|
|
|
|
|
|
|
|
|
|
memcpy(btm_buffer, "delete: ",strlen("delete: "));
|
|
|
|
|
memcpy(btm_buffer + strlen("delete: "), file_str, /* this horrendous check tries to copy everything until the last line, while keeping said last line unwritten */
|
|
|
|
|
(strlen(file_str) > ((BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width) - terminal_width) ?
|
|
|
|
|
((BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width) - terminal_width) :
|
|
|
|
|
strlen(file_str)));
|
|
|
|
|
|
|
|
|
|
memcpy(btm_buffer + (BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width - terminal_width) , "(y/N)", strlen("(y/N)"));
|
|
|
|
|
btm_buffer[BTM_WINDOW_HEIGHT_ON_STR_INTERACTION * terminal_width] = '\0';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
timeout(-1); /* negative numbers block until enter is pressed */
|
|
|
|
|
/* TODO(2025-06-22T01:24:30) fix fixed buffer size */
|
|
|
|
|
char ch = wgetch(win_b);
|
|
|
|
|
|
|
|
|
|
if (ch == 'y' || ch == 'Y') {
|
|
|
|
|
/* TODO(2025-06-30T02:27:06) IMPORTANT: this really fucks up when the file has a quotation mark in its name */
|
|
|
|
|
if (hits) {
|
|
|
|
|
for (i = 0; i < mid_file_count; i++) {
|
|
|
|
|
if (mid_content[i].status & FILE_STATUS_SELECTED) {
|
|
|
|
|
@@ -458,54 +472,45 @@ void delete(){
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = concat("deleted: ", file_str);
|
|
|
|
|
} else {
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
if (mid_content[selected_file_current].file_type & FILE_TYPE_DIR) {
|
|
|
|
|
recursive_delete(mid_content[selected_file_current]);
|
|
|
|
|
}
|
|
|
|
|
remove(mid_content[selected_file_current].file_name);
|
|
|
|
|
btm_buffer = concat("deleted: \"", mid_content[selected_file_current].file_name);
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\"");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/*system(cmd);*/
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
}
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = "cancled deletion";
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
if (hits) {
|
|
|
|
|
free(file_str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
timeout(10);
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
|
|
|
|
|
if (hits) {
|
|
|
|
|
free(file_str);
|
|
|
|
|
}
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void makedir(){
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
memset(btm_buffer, ' ', terminal_width);
|
|
|
|
|
memcpy(btm_buffer, "create dir: ", strlen("create dir: "));
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
btm_buffer = "create dir: ";
|
|
|
|
|
|
|
|
|
|
unsigned long local_height;
|
|
|
|
|
local_height = getmaxy(win_b);
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
/* TODO(2025-07-03T01:19:55) fix fixed buffer size */
|
|
|
|
|
char *str = malloc(255);
|
|
|
|
|
memset(str, ' ', 255);
|
|
|
|
|
int err = read_string(win_b, local_height - 1, 0, str);
|
|
|
|
|
int err = read_string(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION - 1, 0, str);
|
|
|
|
|
|
|
|
|
|
if (!err) {
|
|
|
|
|
btm_buffer = concat(btm_buffer, str);
|
|
|
|
|
mode_t mask = umask(0);
|
|
|
|
|
@@ -513,29 +518,29 @@ void makedir(){
|
|
|
|
|
umask(mask);
|
|
|
|
|
}
|
|
|
|
|
free(str);
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
}
|
|
|
|
|
void makefile(){
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
memcpy(btm_buffer, "create file: ", strlen("create file: "));
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
btm_buffer = "create file: ";
|
|
|
|
|
|
|
|
|
|
unsigned long local_height;
|
|
|
|
|
local_height = getmaxy(win_b);
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
/* TODO(2025-07-03T01:19:49) fix fixed buffer size */
|
|
|
|
|
char *str = malloc(255);
|
|
|
|
|
memset(str, ' ', 255);
|
|
|
|
|
int err = read_string(win_b, local_height - 1, 0, str);
|
|
|
|
|
int err = read_string(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION - 1, 0, str);
|
|
|
|
|
|
|
|
|
|
if (!err) {
|
|
|
|
|
btm_buffer = concat(btm_buffer, str);
|
|
|
|
|
FILE *fp;
|
|
|
|
|
@@ -543,8 +548,11 @@ void makefile(){
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
free(str);
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void update(){
|
|
|
|
|
@@ -590,7 +598,7 @@ void jump_to_dir(unsigned long passes, int index){
|
|
|
|
|
ch = (char*)key_binding[index].black_magic;
|
|
|
|
|
if (*ch == '/') {
|
|
|
|
|
path = malloc(strlen((char*)key_binding[index].black_magic));
|
|
|
|
|
strcpy(path, (char*)key_binding[index].black_magic);
|
|
|
|
|
memcpy(path, (char*)key_binding[index].black_magic, strlen((char*)key_binding[index].black_magic)+1);
|
|
|
|
|
} else if (slash) {
|
|
|
|
|
env_str = malloc(env_len * sizeof(char));
|
|
|
|
|
memcpy(env_str, (char*)key_binding[index].black_magic +1, env_len);
|
|
|
|
|
@@ -600,16 +608,16 @@ void jump_to_dir(unsigned long passes, int index){
|
|
|
|
|
path = concat(env_parsed, (char*)key_binding[index].black_magic + env_len);
|
|
|
|
|
} else {
|
|
|
|
|
path = malloc(strlen((char*)key_binding[index].black_magic));
|
|
|
|
|
strcpy(path, (char*)key_binding[index].black_magic);
|
|
|
|
|
memcpy(path, (char*)key_binding[index].black_magic, strlen((char*)key_binding[index].black_magic)+1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
env_parsed = getenv((char*)key_binding[index].black_magic +1);
|
|
|
|
|
if (env_parsed) {
|
|
|
|
|
path = malloc(strlen(env_parsed)+1);
|
|
|
|
|
strcpy(path, env_parsed);
|
|
|
|
|
memcpy(path, env_parsed, strlen(env_parsed)+1);
|
|
|
|
|
} else {
|
|
|
|
|
path = malloc(strlen((char*)key_binding[index].black_magic));
|
|
|
|
|
strcpy(path, (char*)key_binding[index].black_magic);
|
|
|
|
|
memcpy(path, (char*)key_binding[index].black_magic, strlen((char*)key_binding[index].black_magic)+1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (chdir(path) != 0) {
|
|
|
|
|
@@ -642,6 +650,7 @@ void cmd_on_selected(unsigned long passes, int index){
|
|
|
|
|
(void)passes;
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
|
|
|
|
|
char *btm_buffer_tmp = btm_buffer;
|
|
|
|
|
unsigned int i = 0;
|
|
|
|
|
unsigned int hits = 0;
|
|
|
|
|
char *file_str = " ";
|
|
|
|
|
@@ -666,15 +675,11 @@ void cmd_on_selected(unsigned long passes, int index){
|
|
|
|
|
btm_buffer = concat(btm_buffer, "\n\n");
|
|
|
|
|
btm_buffer = concat(btm_buffer, "(y/N)");
|
|
|
|
|
|
|
|
|
|
status |= STATUS_UPDATE_SCREEN_0;
|
|
|
|
|
werase(win_b);
|
|
|
|
|
mvwin(win_b, terminal_height-6, 0);
|
|
|
|
|
wresize(win_b, 5, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
wresize(win_b, BTM_WINDOW_HEIGHT_ON_STR_INTERACTION, terminal_width/3); /*the div3 just looks cool*/
|
|
|
|
|
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
timeout(-1); /* negative numbers block until enter is pressed */
|
|
|
|
|
/* TODO(2025-07-06T07:22:49) fix fixed buffer size */
|
|
|
|
|
@@ -717,6 +722,8 @@ void cmd_on_selected(unsigned long passes, int index){
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
memcpy(btm_buffer, "cancled deletion", strlen("cancled deletion"));
|
|
|
|
|
}
|
|
|
|
|
free(btm_buffer);
|
|
|
|
|
btm_buffer = btm_buffer_tmp;
|
|
|
|
|
|
|
|
|
|
timeout(10);
|
|
|
|
|
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
|
|
|
|
@@ -772,13 +779,13 @@ void yank_file(unsigned long passes, int index){
|
|
|
|
|
yank_files.count = 1;
|
|
|
|
|
yank_files.list = (char**)malloc(yank_files.count * sizeof(char*));
|
|
|
|
|
*yank_files.list = malloc(strlen(mid_content[selected_file_current].file_name)+1);
|
|
|
|
|
strcpy(*yank_files.list, mid_content[selected_file_current].file_name);
|
|
|
|
|
memcpy(*yank_files.list, mid_content[selected_file_current].file_name, strlen(mid_content[selected_file_current].file_name));
|
|
|
|
|
} else {
|
|
|
|
|
yank_files.list = malloc(yank_files.count * sizeof(char*));
|
|
|
|
|
for (i = 0; i < mid_file_count; i++) {
|
|
|
|
|
if (mid_content[i].status & FILE_STATUS_SELECTED) {
|
|
|
|
|
*yank_files.list = malloc(strlen(mid_content[i].file_name)+1);
|
|
|
|
|
strcpy(*yank_files.list, mid_content[i].file_name);
|
|
|
|
|
memcpy(*yank_files.list, mid_content[i].file_name, strlen(mid_content[i].file_name));
|
|
|
|
|
yank_files.list += 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -846,9 +853,7 @@ void search(){
|
|
|
|
|
local_height = getmaxy(win_b);
|
|
|
|
|
memset(search_buffer, '\0', 255);
|
|
|
|
|
|
|
|
|
|
pthread_mutex_unlock(&mutex_btm);
|
|
|
|
|
render_pass();
|
|
|
|
|
pthread_mutex_lock(&mutex_btm);
|
|
|
|
|
window_btm(win_b, 1);
|
|
|
|
|
|
|
|
|
|
curs_set(1);
|
|
|
|
|
|
|
|
|
|
|