Commit Diff


commit - d5fe31b0596c3cddc539f3364fd630f06e4b6d66
commit + bdb195d03d2b78f6f18de4b69de12fd3556b64f2
blob - 48abfa8342fc1656cb304c6709c0597fd8eaabdf
blob + 7bf28078619d7bed765f80920f3a6fd65cb6792f
--- config.h
+++ config.h
@@ -18,6 +18,7 @@
 #define RVK_TG_HIDDEN   "s"
 #define RVK_NEW_FILE    "n"
 #define RVK_NEW_DIR     "N"
+#define RVK_RENAME      "r"
 #define RVK_TG_MARK     "m"
 #define RVK_INVMARK     "M"
 #define RVK_MARKALL     "a"
blob - 28b7aae7d7270c2158c7bf81f0b47b7a3d05d795
blob + 1eff6e3f51be0e78f3e048397e013a519cbca917
--- rover.c
+++ rover.c
@@ -843,6 +843,27 @@ main(int argc, char *argv[])
             }
             cd(1);
         }
+        else if (!strcmp(key, RVK_RENAME)) {
+            int ok = 0;
+            char *prompt = "rename: ";
+            strcpy(INPUT, "");
+            update_input(prompt, DEFAULT);
+            while (igetstr(INPUT, INPUTSZ)) {
+                ok = 1;
+                for (i = 0; i < rover.nfiles; i++)
+                    if (!strcmp(FNAME(i), INPUT)) {
+                        ok = 0;
+                        break;
+                    }
+                update_input(prompt, ok ? GREEN : RED);
+            }
+            mvhline(LINES - 1, 0, ' ', STATUSPOS);
+            if (strlen(INPUT)) {
+                if (ok) rename(FNAME(FSEL), INPUT);
+                else message("File already exists.", RED);
+            }
+            cd(1);
+        }
         else if (!strcmp(key, RVK_TG_MARK)) {
             if (MARKED(FSEL))
                 del_mark(&rover.marks, FNAME(FSEL));