reimplementations of some functions
This commit is contained in:
@@ -21,6 +21,7 @@ extern pthread_mutex_t mutex_rgt;
|
||||
extern pthread_mutex_t mutex_mid;
|
||||
extern pthread_mutex_t mutex_btm;
|
||||
extern pthread_cond_t cond_rgt;
|
||||
extern pthread_cond_t cond_mid;
|
||||
extern dir mid_dir;
|
||||
|
||||
extern unsigned int terminal_height;
|
||||
@@ -72,7 +73,7 @@ void user_interactions() {
|
||||
memset(input, 0, INPUT_BUFFER_SIZE);
|
||||
input_pass = 0;
|
||||
}
|
||||
status |= STATUS_UPDATE_SCREEN_INTERACTION;
|
||||
status |= STATUS_UPDATE_SCREEN_GENERIC;
|
||||
}
|
||||
|
||||
|
||||
@@ -165,24 +166,28 @@ void quit_program(){
|
||||
status = STATUS_QUIT_PROGRAM;
|
||||
}
|
||||
void update(){
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_MASK);
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY );
|
||||
}
|
||||
void select_all(){
|
||||
TODO;
|
||||
}
|
||||
void move_down(unsigned long passes){
|
||||
mid_dir.current_file = mid_dir.current_file + passes;
|
||||
if (mid_dir.current_file >= mid_dir.file_list + mid_dir.file_count - 1) {
|
||||
if (mid_dir.current_file + passes >= mid_dir.file_list + mid_dir.file_count - 1) {
|
||||
mid_dir.current_file = mid_dir.file_list + mid_dir.file_count - 1;
|
||||
} else {
|
||||
mid_dir.current_file = mid_dir.current_file + passes;
|
||||
}
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_INTERACTION);
|
||||
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_GENERIC);
|
||||
pthread_cond_signal(&cond_mid);
|
||||
}
|
||||
void move_up(unsigned long passes){
|
||||
mid_dir.current_file = mid_dir.current_file - passes;
|
||||
if (mid_dir.current_file <= mid_dir.file_list) {
|
||||
if (mid_dir.current_file - passes <= mid_dir.file_list) {
|
||||
mid_dir.current_file = mid_dir.file_list;
|
||||
} else {
|
||||
mid_dir.current_file = mid_dir.current_file - passes;
|
||||
}
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_INTERACTION);
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_GENERIC);
|
||||
}
|
||||
void move_left(unsigned long passes){
|
||||
unsigned long i;
|
||||
@@ -190,14 +195,60 @@ void move_left(unsigned long passes){
|
||||
if (chdir("..") != 0) {
|
||||
/* TODO(2025-07-09T00:30:05) fix */
|
||||
FAIL("move_left", "unhandled error of chdir");
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
update();
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_GENERIC | STATUS_UPDATE_SCREEN_DIR_CHANGE);
|
||||
|
||||
}
|
||||
void move_right(){
|
||||
TODO;
|
||||
|
||||
if (mid_dir.current_file->file_type & FILE_TYPE_DIR) {
|
||||
if (chdir(mid_dir.current_file->file_name) != 0) {
|
||||
/* TODO(2026-05-05T20:12:14) fix */
|
||||
FAIL("move_right", "unhandled error of chdir");
|
||||
}
|
||||
} else if (mid_dir.current_file->file_type & FILE_TYPE_EXEC) {
|
||||
} else {
|
||||
char *mime = get_mimetype(mid_dir.current_file);
|
||||
char *extension = mid_dir.current_file->file_name;
|
||||
char *cmd;
|
||||
while (extension <= mid_dir.current_file->file_name + strlen(mid_dir.current_file->file_name)) {
|
||||
if (*extension == '.') {
|
||||
break;
|
||||
}
|
||||
extension++;
|
||||
}
|
||||
|
||||
long i;
|
||||
if (extension <= mid_dir.current_file->file_name + strlen(mid_dir.current_file->file_name)) {
|
||||
for (i = 0; i < file_extension_default_count; i++) {
|
||||
if (strcmp(extension, file_extension_default_cmd[i].file_extension) == 0) {
|
||||
cmd = parse_cmd(file_extension_default_cmd[i].command, mid_dir.current_file);
|
||||
if (system(cmd)) {
|
||||
}
|
||||
status |= STATUS_MOVE_RIGHT_MATCH;
|
||||
update();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!(status & STATUS_MOVE_RIGHT_MATCH)) {
|
||||
for (i = 0; i < mimetype_default_count; i++) {
|
||||
if (strstr(mimetype_default_cmd[i].mimetype, mime) == 0) {
|
||||
cmd = parse_cmd(mimetype_default_cmd[i].command, mid_dir.current_file);
|
||||
if (system(cmd)) {
|
||||
}
|
||||
update();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
status &= ~STATUS_MOVE_RIGHT_MATCH;
|
||||
free(cmd);
|
||||
free(mime);
|
||||
}
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_GENERIC | STATUS_UPDATE_SCREEN_DIR_CHANGE);
|
||||
|
||||
}
|
||||
void toggle_hidden_files(){
|
||||
file_modifiers ^= FILE_MODIFIERS_HIDDEN_FILES;
|
||||
@@ -247,7 +298,7 @@ void order_by(unsigned long passes, int index){
|
||||
seed = time(NULL);
|
||||
|
||||
order_func = key_binding[index].black_magic;
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_INTERACTION | STATUS_RELOAD_DIRECTORY);
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_GENERIC | STATUS_RELOAD_DIRECTORY);
|
||||
}
|
||||
void cmd_on_selected(unsigned long passes, int index){
|
||||
TODO;
|
||||
|
||||
Reference in New Issue
Block a user