commit 89341368594bed1a12722f7dd72d1921d3ee0c49 from: Marcel Rodrigues date: Tue Dec 01 22:18:00 2015 UTC Add --save-marks option. commit - 6a758e6a80e0a875dff32357a77fd2b3292aca1a commit + 89341368594bed1a12722f7dd72d1921d3ee0c49 blob - 46f6b2592b8bef73f663da470a670b10efa387d1 blob + a8c54ed2af7f6c83b4d91206c0d75165b71e63f2 --- rover.1 +++ rover.1 @@ -15,9 +15,13 @@ rover \- file browser for the terminal Browse current working directory or the ones specified. .SH OPTIONS .TP -\fB\-s\fR, \fB\-\-save\-cwd\fR +\fB\-d\fR, \fB\-\-save\-cwd\fR write last visited path to \fIFILE\fR before exiting .TP +\fB\-m\fR, \fB\-\-save\-marks\fR +append path of marked entries to \fIFILE\fR before exiting; +if \fIFILE\fR doesn't exist, it'll be created +.TP \fB\-h\fR, \fB\-\-help\fR print help message and exit .TP blob - ccac8851c7316804e4b6b19b9a338a19a6a2e19d blob + 13d4d78d7fef70cb02a565e8bb42ff0e0aba1f34 --- rover.c +++ rover.c @@ -927,10 +927,12 @@ main(int argc, char *argv[]) { int i, ch; char *program; + char *entry; const char *key; DIR *d; EditStat edit_stat; FILE *save_cwd_file = NULL; + FILE *save_marks_file = NULL; if (argc >= 2) { if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) { @@ -938,7 +940,10 @@ main(int argc, char *argv[]) return 0; } else if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { printf( - "Usage: rover [-s|--save-cwd FILE] [DIR [DIR [DIR [...]]]]\n" + "Usage: rover" + " [-d|--save-cwd FILE]" + " [-m|--save-marks FILE]" + " [DIR [DIR [DIR [...]]]]\n" " Browse current directory or the ones specified.\n" " If FILE is given, write last visited path to it.\n\n" " or: rover -h|--help\n" @@ -949,7 +954,7 @@ main(int argc, char *argv[]) "Rover homepage: .\n" ); return 0; - } else if (!strcmp(argv[1], "-s") || !strcmp(argv[1], "--save-cwd")) { + } else if (!strcmp(argv[1], "-d") || !strcmp(argv[1], "--save-cwd")) { if (argc > 2) { save_cwd_file = fopen(argv[2], "w"); argc -= 2; argv += 2; @@ -957,6 +962,14 @@ main(int argc, char *argv[]) fprintf(stderr, "error: missing argument to %s\n", argv[1]); return 1; } + } else if (!strcmp(argv[1], "-m") || !strcmp(argv[1], "--save-marks")) { + if (argc > 2) { + save_marks_file = fopen(argv[2], "a"); + argc -= 2; argv += 2; + } else { + fprintf(stderr, "error: missing argument to %s\n", argv[1]); + return 1; + } } } init_term(); @@ -1287,11 +1300,19 @@ main(int argc, char *argv[]) } if (rover.nfiles) free_rows(&rover.rows, rover.nfiles); - free_marks(&rover.marks); delwin(rover.window); if (save_cwd_file != NULL) { fputs(CWD, save_cwd_file); fclose(save_cwd_file); } + if (save_marks_file != NULL) { + for (i = 0; i < rover.marks.bulk; i++) { + entry = rover.marks.entries[i]; + if (entry) + fprintf(save_marks_file, "%s%s\n", rover.marks.dirpath, entry); + } + fclose(save_marks_file); + } + free_marks(&rover.marks); return 0; }