login

<     >

2015-06-04 14:32:08 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Merge pull request #3 from Vifon/shell_cd

Quick and dirty support for cd in bash and zsh

diff --git a/rover.c b/rover.c
index 4fc21ce..c8604de 100644
--- a/rover.c
+++ b/rover.c
@@ -759,8 +759,9 @@ main(int argc, char *argv[])
     const char *key;
     DIR *d;
     EditStat edit_stat;
+    const char *save_cwd_file = NULL;
 
-    if (argc == 2) {
+    if (argc >= 2) {
         if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) {
             printf("rover %s\n", RV_VERSION);
             return 0;
@@ -776,6 +777,10 @@ main(int argc, char *argv[])
                 "Rover homepage: <https://github.com/lecram/rover>.\n"
             );
             return 0;
+        } else if (argc > 2 && !strcmp(argv[1], "--save-cwd")) {
+            --argc; ++argv;
+            save_cwd_file = argv[1];
+            --argc; ++argv;
         }
     }
     init_term();
@@ -1097,5 +1102,10 @@ main(int argc, char *argv[])
         free_rows(&rover.rows, rover.nfiles);
     free_marks(&rover.marks);
     delwin(rover.window);
+    if (save_cwd_file != NULL) {
+        FILE *fd = fopen(save_cwd_file, "w");
+        fputs(rover.cwd[rover.tab], fd);
+        fclose(fd);
+    }
     return 0;
 }

diff --git a/rover.sh b/rover.sh
new file mode 100755
index 0000000..33b4107
--- /dev/null
+++ b/rover.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Based on ranger launcher.
+#
+# Usage: ". ./rover.sh [/path/to/rover]"
+
+tempfile="$(mktemp)"
+rover="${1:-rover}"
+test -z "$1" || shift
+"$rover" --save-cwd "$tempfile" "${@:-$(pwd)}"
+returnvalue=$?
+test -f "$tempfile" &&
+if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
+    cd "$(cat "$tempfile")"
+fi
+rm -f -- "$tempfile"
+return $returnvalue