Commit Diff


commit - b7ee4ee2affb393cb02c8af1c8d3e1601c750055
commit + ca8ebdcea7245178f4568a5b7298f2ccb59eb266
blob - 49ccf2698220512dc4f363c3268be27354a3787e
blob + b67e60fd6351cb42b99f2b5be6f33af9407b1cee
--- config.h
+++ config.h
@@ -21,6 +21,7 @@
 #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
@@ -462,9 +462,9 @@ process_marked(PROCESS pre, PROCESS proc, PROCESS pos)
 }
 
 /* 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;
@@ -492,6 +492,13 @@ static int adddir(const char *path) {
     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). */
@@ -791,15 +798,20 @@ main(int argc, char *argv[])
             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);