commit - 1c86f4eb362da9c1fc05182c10cf9ec468723822
commit + 38a357b6614af7a13f9c1846389ecba9e39bd950
blob - 80f2e6ad2bb624a7fe4e04b4362dad4de4dc9108
blob + 143533d49bbc1bca0f263841da4a96cd9a44549d
--- rover.c
+++ rover.c
}
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. */
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) {