diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2019-12-29 09:07:58 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2019-12-29 09:07:58 +0530 |
commit | 7b7e005e52cbf8e58d65e80c31b0532321413c17 (patch) | |
tree | b80ca33f9a08e6075ff684862bcdf92a60b56118 /src | |
parent | 71576442504aa0f0264bd74036ab5ed64adc519d (diff) | |
download | nnn-7b7e005e52cbf8e58d65e80c31b0532321413c17.tar.gz |
Retire execute file
There is no way to detect and handle GUI executables. Must run manually.
Diffstat (limited to 'src')
-rw-r--r-- | src/nnn.c | 62 | ||||
-rw-r--r-- | src/nnn.h | 3 |
2 files changed, 15 insertions, 50 deletions
@@ -452,20 +452,18 @@ static char * const utils[] = { #define MSG_CONTINUE 22 #define MSG_SEL_MISSING 23 #define MSG_ACCESS 24 -#define MSG_NOT_REG_FILE 25 -#define MSG_PERM_DENIED 26 -#define MSG_EMPTY_FILE 27 -#define MSG_UNSUPPORTED 28 -#define MSG_NOT_SET 29 -#define MSG_DIR_CHANGED 30 -#define MSG_EXISTS 31 -#define MSG_FEW_COLUMNS 32 -#define MSG_REMOTE_OPTS 33 -#define MSG_RCLONE_DELAY 34 -#define MSG_APP_NAME 35 -#define MSG_ARCHIVE_OPTS 36 -#define MSG_PLUGIN_KEYS 37 -#define MSG_BOOKMARK_KEYS 38 +#define MSG_EMPTY_FILE 25 +#define MSG_UNSUPPORTED 26 +#define MSG_NOT_SET 27 +#define MSG_DIR_CHANGED 28 +#define MSG_EXISTS 29 +#define MSG_FEW_COLUMNS 30 +#define MSG_REMOTE_OPTS 31 +#define MSG_RCLONE_DELAY 32 +#define MSG_APP_NAME 33 +#define MSG_ARCHIVE_OPTS 34 +#define MSG_PLUGIN_KEYS 35 +#define MSG_BOOKMARK_KEYS 36 static const char * const messages[] = { "no traversal", @@ -493,8 +491,6 @@ static const char * const messages[] = { "\nPress Enter to continue", "open failed", "dir inaccessible", - "not regular file", - "permission denied", "empty: edit or open with", "unsupported file", "not set", @@ -3199,29 +3195,6 @@ static void find_accessible_parent(char *path, char *newpath, char *lastname, in xdelay(XDELAY_INTERVAL_MS); } -static bool execute_file(int cur, char *path, char *newpath, int *presel) -{ - if (!ndents) - return FALSE; - - /* Check if this is a directory */ - if (!S_ISREG(dents[cur].mode)) { - printwait(messages[MSG_NOT_REG_FILE], presel); - return FALSE; - } - - /* Check if file is executable */ - if (!(dents[cur].mode & 0100)) { - printwait(messages[MSG_PERM_DENIED], presel); - return FALSE; - } - - mkpath(path, dents[cur].name, newpath); - spawn(newpath, NULL, NULL, path, F_NORMAL); - - return TRUE; -} - /* Create non-existent parents and a file or dir */ static bool xmktree(char* path, bool dir) { @@ -3515,10 +3488,10 @@ static void show_help(const char *path) "cv version%-17cE Extension\n" "1MISC\n" "9! ^] Shell%-17c; x Plugin key\n" - "cC Execute file%-9ci ^V Pick plugin\n" + "9] ^P Prompt%-15ci ^V Pick plugin\n" "cs Manage session%-10c= Launch app\n" "cc Connect remote%-10cu Unmount\n" - "9] ^P Prompt%-18cL Lock\n" + "cL Lock%-0c\n" }; fd = create_tmp_file(); @@ -5119,7 +5092,7 @@ nochange: mkpath(path, tmp, newpath); if (access(newpath, F_OK) == 0) { fd = get_input(messages[MSG_OVERWRITE]); - if (r != 'y' && r != 'Y') { + if (fd != 'y' && fd != 'Y') { clearprompt(); goto nochange; } @@ -5304,17 +5277,12 @@ nochange: setdirwatch(); clearfilter(); goto begin; - case SEL_EXEC: // fallthrough case SEL_SHELL: // fallthrough case SEL_LAUNCH: // fallthrough case SEL_RUNCMD: endselection(); switch (sel) { - case SEL_EXEC: - if (!execute_file(cur, path, newpath, &presel)) - goto nochange; - break; case SEL_SHELL: setenv(envs[ENV_NCUR], (ndents ? dents[cur].name : ""), 1); spawn(shell, NULL, NULL, path, F_CLI); @@ -94,7 +94,6 @@ enum action { SEL_HELP, SEL_PLUGKEY, SEL_PLUGIN, - SEL_EXEC, SEL_SHELL, SEL_LAUNCH, SEL_RUNCMD, @@ -246,8 +245,6 @@ static struct key bindings[] = { /* Run a plugin */ { 'i', SEL_PLUGIN }, { CONTROL('V'), SEL_PLUGIN }, - /* Execute file */ - { 'C', SEL_EXEC }, /* Run command */ { '!', SEL_SHELL }, { CONTROL(']'), SEL_SHELL }, |