From 6693691a4b0759c450995c1db15222c01fc03a0b Mon Sep 17 00:00:00 2001 From: hnhx Date: Sun, 23 Oct 2022 20:07:49 +0200 Subject: [PATCH] changed how files are opened, fixed a bug where the program would segfault if the user didn't have permission to enter a dir --- README.md | 12 ++-- config.h | 46 +++++++++++++-- fx.c | 157 ++++++++++++++++++++++++-------------------------- shortcuts.png | Bin 80786 -> 0 bytes utils.c | 18 ++++++ utils.h | 1 + 6 files changed, 142 insertions(+), 92 deletions(-) delete mode 100644 shortcuts.png diff --git a/README.md b/README.md index 2fd5d65..5dd6a31 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,12 @@ sudo make install
### How to use -If you want to perform file opreations (move, remove etc.) you have to select the entry / entries first. So if you want to remove `foo`, you have to move to it, and when its highlighted you have to press `space` to select it and then `r` to delete it. -The keybinds below will help you understand how the program works. +If you want to perform file operations (move, remove etc.) you have to select the entry / entries first. So if you want to remove `foo`, you have to move to it, and when its highlighted you have to press `space` to select it and then `r` to delete it. +The keybinds can be configured in `config.h`, that will help you understand how to navigate the program.
-### Keybinds -

- -

+### Config +Edit `config.h` then just recompile the program via `make`. + +
diff --git a/config.h b/config.h index 568b74e..b12ae05 100644 --- a/config.h +++ b/config.h @@ -12,10 +12,46 @@ #define RESET "\x1B[0m" #define CLEAR "\e[1;1H\e[2J" +/* Keybinds */ + +#define UP 'w' +#define DOWN 's' +#define LEFT 'a' +#define RIGHT 'd' + +#define UP2 'k' +#define DOWN2 'j' +#define LEFT2 'h' +#define RIGHT2 'l' + +#define SELECT 32 // space +#define REMOVE 'r' +#define COPY 'c' +#define MOVE 'm' // this is rename as well +#define SYMLINK 'y' +#define MAKE_FILE 't' // t as in touch +#define MAKE_DIR 'T' + +#define TEXT_OPEN 'e' +#define MEDIA_OPEN 'v' +#define IMAGE_OPEN 'i' +#define DOCUMENT_OPEN 'n' +#define BROWSER_OPEN 'b' +#define EXECUTE 'x' + +#define SEARCH '/' +#define OPEN 'o' +#define UNHIDE 'u' +#define JUMP_FIRST 'g' +#define JUMP_LAST 'G' + +#define QUIT 'q' +#define NORMAL_RESET 27 // escape + /* Software to open files with */ -const char text_editor[256] = "nano"; -const char media_player[256] = "mpv"; -const char image_viewer[256] = "feh"; -const char document_reader[256] = "firefox"; -const char browser[256] = "firefox"; +#define TEXT_EDITOR "vim" +#define MEDIA_PLAYER "mpv" +#define IMAGE_VIEWER "feh" +#define DOCUMENT_READER "firefox" +#define BROWSER "firefox" diff --git a/fx.c b/fx.c index 427c194..b0f0903 100644 --- a/fx.c +++ b/fx.c @@ -35,7 +35,6 @@ int main(int argc, char *argv[]) char buf[10]; - char software[256]; char entry_name[256]; char search_term[256]; char last_entry_name[256] = { 0 }; @@ -47,8 +46,6 @@ int main(int argc, char *argv[]) char current_entry[4096]; char entry_to_work_with[4096] = { 0 }; - char command[5120]; - char tags[9][4096] = { 0 }; char selected_entries[1024][1024] = { 0 }; @@ -80,7 +77,8 @@ int main(int argc, char *argv[]) dir = opendir(path); if (dir == NULL) { - printf("This directory doesn't exist! (%s)\n", path); + printf("This directory doesn't exist or you lack permissions! (%s)\n", path); + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); return 1; } @@ -88,8 +86,8 @@ int main(int argc, char *argv[]) { switch (c) { - case 'a': // enter the parent directory - case 'h': + case LEFT: // enter the parent directory + case LEFT2: if (strcmp(path, "/") == 0) { break; @@ -99,94 +97,53 @@ int main(int argc, char *argv[]) strcpy(path, temp_path); break; - case 'w': // go up - case 'k': + case UP: // go up + case UP2: if (position) { position--; } break; - case 's': // go down - case 'j': + case DOWN: // go down + case DOWN2: if (entry_count - 1 > position) { position++; } break; - case 'd': // enter a directory or open a file - case 'l': + case RIGHT: // enter a directory + case RIGHT2: stat(current_entry, &st); - if (S_ISDIR(st.st_mode)) { + if (opendir(current_entry) == NULL) + { + break; + } + strcpy(path, current_entry); position = 0; - } - else - { - puts(SECONDARY_FG "\n\nOpen file with:\n"); - puts(SECONDARY_FG "[" PRIMARY_FG "1" SECONDARY_FG"] Text editor"); - puts(SECONDARY_FG "[" PRIMARY_FG "2" SECONDARY_FG"] Media player"); - puts(SECONDARY_FG "[" PRIMARY_FG "3" SECONDARY_FG"] Image viewer"); - puts(SECONDARY_FG "[" PRIMARY_FG "4" SECONDARY_FG"] Document reader"); - puts(SECONDARY_FG "[" PRIMARY_FG "5" SECONDARY_FG"] Browser"); - puts(SECONDARY_FG "\n[" PRIMARY_FG "6" SECONDARY_FG"] Execute it"); - c = getchar(); - switch (c) - { - case '1': - strcpy(software, text_editor); - break; - case '2': - strcpy(software, media_player); - break; - case '3': - strcpy(software, image_viewer); - break; - case '4': - strcpy(software, document_reader); - break; - case '5': - strcpy(software, browser); - break; - case '6': - strcpy(software, current_entry); - break; - } - - if (strcmp(software, current_entry) == 0) - { - strcpy(command, software); - } - else - { - sprintf(command, "%s %s", software, current_entry); - } - - system(command); - - printf(RESET); } break; - case 'g': // go to the top of the directory + case JUMP_FIRST: // go to the top of the directory position = 0; break; - case 'G': // go to the bottom of the directory + case JUMP_LAST: // go to the bottom of the directory position = entry_count - 1; break; - case 'm': // move or rename an entry - case 'y': // create a symlink - case 'c': // copy a file - case 'r': // remove an entry + case MOVE: // move or rename an entry + case SYMLINK: // create a symlink + case COPY: // copy a file + case REMOVE: // remove an entry if (selected_entries[0][0]) { - if (c == 'r') + if (c == REMOVE) { printf(SECONDARY_FG"\n\nAre you sure that you want to remove the selected entries? (" PRIMARY_FG "y" SECONDARY_FG "/" PRIMARY_FG "N" SECONDARY_FG ")" RESET " "); if (getchar() != 'y') @@ -234,13 +191,13 @@ int main(int argc, char *argv[]) switch (c) { - case 'm': + case MOVE: rename(entry_to_work_with, new_path); break; - case 'y': + case SYMLINK: symlink(entry_to_work_with, new_path); break; - case 'c': + case COPY: if (strcmp(entry_to_work_with, new_path) == 0) { @@ -263,7 +220,7 @@ int main(int argc, char *argv[]) fclose(fptr1); break; - case 'r': + case REMOVE: stat(entry_to_work_with, &st); if (S_ISDIR(st.st_mode)) @@ -282,8 +239,8 @@ int main(int argc, char *argv[]) } break; - case 't': // create a new file - case 'T': // create a new directory + case MAKE_FILE: // create a new file + case MAKE_DIR: // create a new directory printf(SECONDARY_FG "\n\nEntry name:" RESET " " PRIMARY_FG); tcsetattr( STDIN_FILENO, TCSANOW, &oldt); scanf("%255s", entry_name); @@ -293,7 +250,7 @@ int main(int argc, char *argv[]) printf(RESET); - if (c == 't') + if (c == MAKE_FILE) { fp = fopen(temp_path, "w"); fclose(fp); @@ -302,10 +259,35 @@ int main(int argc, char *argv[]) { mkdir(temp_path, 0755); } - break; - case '/': // filter entry names + case TEXT_OPEN: // open current file with the text editor + external_open(current_entry, TEXT_EDITOR); + break; + + case MEDIA_OPEN: + external_open(current_entry, MEDIA_PLAYER); + break; + + case IMAGE_OPEN: + external_open(current_entry, IMAGE_VIEWER); + break; + + case DOCUMENT_OPEN: + external_open(current_entry, DOCUMENT_READER); + break; + + case BROWSER_OPEN: + external_open(current_entry, BROWSER); + break; + + case EXECUTE: + tcsetattr( STDIN_FILENO, TCSANOW, &oldt); + external_open(current_entry, current_entry); + tcsetattr( STDIN_FILENO, TCSANOW, &newt); + break; + + case SEARCH: // search entry names printf(SECONDARY_FG "\n\nSearch entry:" RESET " " PRIMARY_FG); tcsetattr( STDIN_FILENO, TCSANOW, &oldt); scanf("%255s", search_term); @@ -313,7 +295,7 @@ int main(int argc, char *argv[]) position = 0; break; - case 'o': // open a given path + case OPEN: // open a given path printf(SECONDARY_FG "\n\nPath to open:" RESET " " PRIMARY_FG); tcsetattr( STDIN_FILENO, TCSANOW, &oldt); scanf("%255s", temp_path); @@ -333,7 +315,7 @@ int main(int argc, char *argv[]) break; - case 'u': // unhide hidden entries + case UNHIDE: // unhide hidden entries if (hidden) { hidden = 0; @@ -363,7 +345,7 @@ int main(int argc, char *argv[]) position = 0; break; - case 32: // space, select entries + case SELECT: // select entries for (int i = 0; 1024 > i; i++) { if (selected_entries[i][0]) @@ -392,7 +374,7 @@ int main(int argc, char *argv[]) } break; - case 27: // escape, resets everything + case NORMAL_RESET: // resets everything position = 0; memset(selected_entries, 0, 1024 * 1024); @@ -466,18 +448,26 @@ int main(int argc, char *argv[]) for (int i = 0; 1024 > i; i++) { + + if (selected_entries[i][0] == 0) + { + break; + } + if (strcmp(selected_entries[i], temp_path) == 0) { printf(SECONDARY_FG); } } + // the user entered the parent directory so we want to highlight that if (strcmp(entry_name, last_entry_name) == 0) { position = entry_count; memset(last_entry_name, 0, 256); printf(SELECTED_BG SELECTED_FG); } + // the user searched for an entry so we want to highlight that else if (search_term[0] && strcasestr(entry_name, search_term)) { @@ -485,7 +475,8 @@ int main(int argc, char *argv[]) memset(search_term, 0, 256); printf(SELECTED_BG SELECTED_FG); } - else if (entry_count == position && last_entry_name[0] == 0) + else if (entry_count == position && + last_entry_name[0] == 0) { printf(SELECTED_BG SELECTED_FG); } @@ -542,10 +533,14 @@ int main(int argc, char *argv[]) printf(RESET SECONDARY_FG "Last changed: " PRIMARY_FG "%s" RESET, ctime(&st.st_ctime)); printf(RESET SECONDARY_FG "\nNumber of entries: " PRIMARY_FG "%d" RESET, entry_count); - printf(SECONDARY_FG "\nFile size sum: " PRIMARY_FG "%s" RESET, readable_file_size(file_size_sum, buf)); + if (file_size_sum != 0) + { + printf(SECONDARY_FG "\nFile size sum: " PRIMARY_FG "%s" RESET, readable_file_size(file_size_sum, buf)); + } - } while((c=getchar()) != 'q'); + } while((c=getchar()) != QUIT); + printf(CLEAR); tcsetattr( STDIN_FILENO, TCSANOW, &oldt); return 0; diff --git a/shortcuts.png b/shortcuts.png deleted file mode 100644 index 3b7618972f8ad1b0c024145e9f8389d42338a5e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80786 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