commit - b7ee4ee2affb393cb02c8af1c8d3e1601c750055
commit + ca8ebdcea7245178f4568a5b7298f2ccb59eb266
blob - 49ccf2698220512dc4f363c3268be27354a3787e
blob + b67e60fd6351cb42b99f2b5be6f33af9407b1cee
--- config.h
+++ config.h
#define RVK_MARKALL "a"
#define RVK_DELETE "X"
#define RVK_COPY "C"
+#define RVK_MOVE "V"
/* Colors available: DEFAULT, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE. */
#define RVC_CWD GREEN
blob - 22f7948cb78bbeb30fd9758f38692b39f7fc7753
blob + d4ab8afe686fa08793f2a5047c58bd9a2b4ae17a
--- rover.c
+++ rover.c
}
/* Wrappers for file operations. */
-static PROCESS delete = unlink;
+static PROCESS delfile = unlink;
static PROCESS deldir = rmdir;
-static int copy(const char *srcpath) {
+static int cpyfile(const char *srcpath) {
int src, dst, ret;
size_t size;
struct stat st;
ret = stat(CWD, &st);
if (ret < 0) return ret;
return mkdir(path, st.st_mode);
+}
+static int movfile(const char *path) {
+ int ret;
+
+ ret = cpyfile(path);
+ if (ret < 0) return ret;
+ return delfile(path);
}
/* Do a fork-exec to external program (e.g. $EDITOR). */
update();
}
else if (!strcmp(key, RVK_DELETE)) {
- process_marked(NULL, delete, deldir);
+ process_marked(NULL, delfile, deldir);
mark_none(&rover.marks);
cd(1);
}
else if (!strcmp(key, RVK_COPY)) {
- process_marked(adddir, copy, NULL);
+ process_marked(adddir, cpyfile, NULL);
mark_none(&rover.marks);
cd(1);
}
+ else if (!strcmp(key, RVK_MOVE)) {
+ process_marked(adddir, movfile, NULL);
+ mark_none(&rover.marks);
+ cd(1);
+ }
}
if (rover.nfiles)
free_rows(&rover.rows, rover.nfiles);