login

<     >

2014-11-09 16:31:16 (UTC-02:00)

Marcel Rodrigues <marcelgmr@gmail.com>

Let user specify tabs at startup.

diff --git a/rover.c b/rover.c
index 80f2e6a..143533d 100644
--- a/rover.c
+++ b/rover.c
@@ -279,10 +279,11 @@ igetstr(char *buffer, int maxlen)
 }
 
 int
-main()
+main(int argc, char *argv[])
 {
     int i, ch;
     char *program, *key;
+    DIR *d;
 
     init_term();
     /* Avoid invalid free() calls in cd() by zeroing the tally. */
@@ -292,14 +293,21 @@ main()
         rover.flags[i] = SHOW_FILES | SHOW_DIRS;
     }
     strcpy(rover.cwd[0], getenv("HOME"));
-    if (rover.cwd[0][strlen(rover.cwd[0]) - 1] != '/')
-        strcat(rover.cwd[0], "/");
-    for (i = 1; i < 10; i++)
-        strcpy(rover.cwd[i], rover.cwd[0]);
+    for (i = 1; i < argc && i < 10; i++) {
+        d = opendir(argv[i]);
+        if (d) {
+            strcpy(rover.cwd[i], argv[i]);
+            closedir(d);
+        }
+        else strcpy(rover.cwd[i], rover.cwd[0]);
+    }
+    getcwd(rover.cwd[i], FILENAME_MAX);
+    for (i++; i < 10; i++)
+        strcpy(rover.cwd[i], rover.cwd[i-1]);
+    for (i = 0; i < 10; i++)
+        if (rover.cwd[i][strlen(rover.cwd[i]) - 1] != '/')
+            strcat(rover.cwd[i], "/");
     rover.tab = 1;
-    getcwd(CWD, FILENAME_MAX);
-    if (CWD[strlen(CWD)-1] != '/')
-        strcat(CWD, "/");
     rover.window = subwin(stdscr, LINES - 2, COLS, 1, 0);
     cd(1);
     while (1) {