commit - 89654e2bc1cbd34103ad381b6137889c165f43f6
commit + 7a9072e20ad89d8fd88a5b1c19e1dc3952cea755
blob - f6f9a9bd6890469edf93808e2aa9c833ef8c549f
blob + 96a9b992eb2cf691b3f72dc74adbc297d9410a08
--- README.md
+++ README.md
f/d/s - toggle file/directory/hidden listing
n/N - create new file/directory
R - rename selected file or directory
+ E - toggle execute permission of the selected file
D - delete selected file or (empty) directory
m - toggle mark on the selected entry
M - toggle mark on all visible entries
blob - c2b644ca91fa355d40ddcb2cbc29b7a08eaac8bf
blob + ef7ad987f78e26ca6ec40a0c15b0428e89549b2b
--- config.h
+++ config.h
#define RVK_NEW_FILE "n"
#define RVK_NEW_DIR "N"
#define RVK_RENAME "R"
+#define RVK_TG_EXEC "E"
#define RVK_DELETE "D"
#define RVK_TG_MARK "m"
#define RVK_INVMARK "M"
blob - 321a61c90db0953abfb374ae6dcc83a4c97d0cec
blob + 6cb7e1f835183e87afc182c2ed4b2070bdbc7631
--- rover.1
+++ rover.1
.B R
Rename selected file or directory.
.TP
+.B E
+Toggle execute permission of the selected file.
+.TP
.B D
Delete selected file or (empty) directory.
.TP
blob - 2665a989a6773868b1b28717267b7c1d3de3b380
blob + 640d0d5d9d399ef66b80e5f67cc850a9791edf70
--- rover.c
+++ rover.c
update_view();
} else
message(RED, "\"%s\" already exists.", INPUT);
+ }
+ } else if (!strcmp(key, RVK_TG_EXEC)) {
+ if (!rover.nfiles || S_ISDIR(EMODE(ESEL))) continue;
+ if (S_IXUSR & EMODE(ESEL))
+ EMODE(ESEL) &= ~(S_IXUSR | S_IXGRP | S_IXOTH);
+ else
+ EMODE(ESEL) |= S_IXUSR | S_IXGRP | S_IXOTH ;
+ if (chmod(ENAME(ESEL), EMODE(ESEL))) {
+ message(RED, "Failed to change mode of \"%s\".", ENAME(ESEL));
+ } else {
+ message(GREEN, "Changed mode of \"%s\".", ENAME(ESEL));
+ update_view();
}
} else if (!strcmp(key, RVK_DELETE)) {
if (rover.nfiles) {