login

<     >

2014-11-13 17:34:12 (UTC-02:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Add move support.

diff --git a/config.h b/config.h
index 49ccf26..b67e60f 100644
--- a/config.h
+++ b/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

diff --git a/rover.c b/rover.c
index 22f7948..d4ab8af 100644
--- a/rover.c
+++ b/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;
@@ -493,6 +493,13 @@ static int adddir(const char *path) {
     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). */
 static void
@@ -791,12 +798,17 @@ 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);
         }