commit - 6a758e6a80e0a875dff32357a77fd2b3292aca1a
commit + 89341368594bed1a12722f7dd72d1921d3ee0c49
blob - 46f6b2592b8bef73f663da470a670b10efa387d1
blob + a8c54ed2af7f6c83b4d91206c0d75165b71e63f2
--- rover.1
+++ rover.1
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
{
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")) {
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"
"Rover homepage: <https://github.com/lecram/rover>.\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;
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();
}
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;
}