Compare commits

...

3 Commits

4 changed files with 16 additions and 8 deletions

View File

@@ -100,13 +100,13 @@ char* parse_cmd(const char *cmd, file *f){
pos = out; pos = out;
if (offset) { if (offset) {
memcpy(pos, cmd, offset - cmd); memcpy(pos, cmd, offset - cmd);
pos += offset - cmd + 1; pos += offset - cmd;
} else { } else {
memcpy(pos, cmd, strlen(cmd)); memcpy(pos, cmd, strlen(cmd));
pos += strlen(cmd) + 1; pos += strlen(cmd) + 1;
}
pos[-1] = ' '; pos[-1] = ' ';
pos[0] = '\''; }
*pos = '\'';
pos++; pos++;
i = 0; i = 0;

6
dir.c
View File

@@ -52,6 +52,8 @@ void get_dir_content(char *path, dir *dir){
} else { } else {
scandir(path, &entry, skip_hidden_files, NULL); scandir(path, &entry, skip_hidden_files, NULL);
} }
char *full_path = NULL; char *full_path = NULL;
unsigned long i = 0; unsigned long i = 0;
for (i = 0; i < dir->file_count; i++ ) { for (i = 0; i < dir->file_count; i++ ) {
@@ -199,7 +201,7 @@ void print_dir(WINDOW *win, char print_info, dir *dir){
} while (file_size > 1 && size_index < size_unit_count); } while (file_size > 1 && size_index < size_unit_count);
size_char = size_unit[(unsigned)size_index]; size_char = size_unit[(unsigned)size_index];
if (dir->file_list[i].file_type &= FILE_TYPE_DIR) { if (dir->file_list[i].file_type & FILE_TYPE_DIR) {
offset_back = line_width - (snprintf(NULL,0,"%ld", dir->file_list[i].file_size) + 1); offset_back = line_width - (snprintf(NULL,0,"%ld", dir->file_list[i].file_size) + 1);
} else if (size_char =='B') { } 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);
@@ -265,7 +267,7 @@ void print_dir(WINDOW *win, char print_info, dir *dir){
#endif #endif
if (dir->file_list[i].file_type &= FILE_TYPE_DIR) { if (dir->file_list[i].file_type & FILE_TYPE_DIR) {
mvwprintw(win, i-offset_vertical, offset_back, "%ld", dir->file_list[i].file_size); mvwprintw(win, i-offset_vertical, offset_back, "%ld", dir->file_list[i].file_size);
}else if (size_char =='B') { }else if (size_char =='B') {
mvwprintw(win, i-offset_vertical, offset_back, "%0.0lf %c", printed_size, size_char); mvwprintw(win, i-offset_vertical, offset_back, "%0.0lf %c", printed_size, size_char);

View File

@@ -207,6 +207,10 @@ void move_right(){
} }
dir_changed(); dir_changed();
} else if (mid_dir.current_file->file_type & FILE_TYPE_EXEC) { } else if (mid_dir.current_file->file_type & FILE_TYPE_EXEC) {
chdir(".");
char *cmd = parse_cmd("./"SETTINGS_COMMAND_REPLACE_STR,mid_dir.current_file);
if (system(cmd)) {
}
} else { } else {
char *mime = get_mimetype(mid_dir.current_file); char *mime = get_mimetype(mid_dir.current_file);
char *extension = mid_dir.current_file->file_name; char *extension = mid_dir.current_file->file_name;
@@ -233,7 +237,7 @@ void move_right(){
} }
if (!(status & STATUS_MOVE_RIGHT_MATCH)) { if (!(status & STATUS_MOVE_RIGHT_MATCH)) {
for (i = 0; i < mimetype_default_count; i++) { for (i = 0; i < mimetype_default_count; i++) {
if (strstr(mimetype_default_cmd[i].mimetype, mime) == 0) { if (strstr(mime, mimetype_default_cmd[i].mimetype)) {
cmd = parse_cmd(mimetype_default_cmd[i].command, mid_dir.current_file); cmd = parse_cmd(mimetype_default_cmd[i].command, mid_dir.current_file);
if (system(cmd)) { if (system(cmd)) {
} }

View File

@@ -215,8 +215,10 @@ void *thread_rgt(){
pthread_mutex_unlock(&mutex_mid); pthread_mutex_unlock(&mutex_mid);
if (rgt_dir.current_file->permissions & S_IRUSR) { if (rgt_dir.current_file->permissions & S_IRUSR) {
if (rgt_dir.current_file->file_type &= FILE_TYPE_DIR) { if (rgt_dir.current_file->file_type & FILE_TYPE_DIR) {
#if SETTINGS_UEBERZUG_IMAGE_PREVIEW != 0 #if SETTINGS_UEBERZUG_IMAGE_PREVIEW != 0
images_clear(); images_clear();
#endif #endif
@@ -243,7 +245,7 @@ void *thread_rgt(){
rgt_dir.current_file->file_type |= FILE_TYPE_OPEN_FILE; rgt_dir.current_file->file_type |= FILE_TYPE_OPEN_FILE;
pthread_mutex_lock(&mutex_render); pthread_mutex_lock(&mutex_render);
werase(win_r); werase(win_r);
if (rgt_dir.current_file->file_type == FILE_TYPE_OPEN_FILE) { if (rgt_dir.current_file->file_type & FILE_TYPE_OPEN_FILE) {
mvwaddnstr(win_r, 0, 0, rgt_buffer, (terminal_width/2) * terminal_width); mvwaddnstr(win_r, 0, 0, rgt_buffer, (terminal_width/2) * terminal_width);
} else if ((rgt_dir.current_file->permissions & S_IRUSR) == 0) { } else if ((rgt_dir.current_file->permissions & S_IRUSR) == 0) {
mvwaddstr(win_r, 0, 0, "not accessible"); mvwaddstr(win_r, 0, 0, "not accessible");