commit 38a357b6614af7a13f9c1846389ecba9e39bd950 from: Marcel Rodrigues date: Sun Nov 09 18:31:16 2014 UTC Let user specify tabs at startup. commit - 1c86f4eb362da9c1fc05182c10cf9ec468723822 commit + 38a357b6614af7a13f9c1846389ecba9e39bd950 blob - 80f2e6ad2bb624a7fe4e04b4362dad4de4dc9108 blob + 143533d49bbc1bca0f263841da4a96cd9a44549d --- rover.c +++ 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) {