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); }