commit 5fc8b927fcb7c5d814eaae082e8c1f349ee6cc4f from: Marcel Rodrigues date: Fri Nov 14 14:58:17 2014 UTC Remove mark inversion. File operations need to know the path of all marked entries. But if the marks are inverted, then paths are only available when the file operation occurs on the same directory as the marks. commit - 180163337afc8741ad996f601918faffd4277780 commit + 5fc8b927fcb7c5d814eaae082e8c1f349ee6cc4f blob - eb86aa7eb4ffbf7f5082f6736e9064eadbafa6b5 blob + b32bf6571b8f586bff3b3fcf791cfd67a974f19e --- config.h +++ config.h @@ -18,7 +18,7 @@ #define RVK_TG_HIDDEN "s" #define RVK_TG_MARK "m" #define RVK_INVMARK "M" -#define RVK_TG_MARKALL "a" +#define RVK_MARKALL "a" /* Colors available: DEFAULT, RED, GREEN, YELLOW, BLUE, CYAN, MAGENTA, WHITE. */ #define RVC_CWD GREEN blob - 876f172104572b1b2a847c7c3bb7d00b4b8b11b1 blob + ab6b85f9dd8d90542ce12b8060703560340a2930 --- rover.c +++ rover.c @@ -48,7 +48,6 @@ typedef struct { typedef struct { char dirpath[FILENAME_MAX]; - int inverse; int bulk; int nentries; char **entries; @@ -80,13 +79,11 @@ void init_marks(marks_t *marks) { strcpy(marks->dirpath, ""); - marks->inverse = 0; marks->bulk = BULK_INIT; marks->nentries = 0; marks->entries = (char **) calloc(marks->bulk, sizeof(char *)); } -/* If marks->inverse is nonzero, this will actually mark all! */ void mark_none(marks_t *marks) { @@ -105,7 +102,6 @@ mark_none(marks_t *marks) } } -/* If marks->inverse is nonzero, this will actually unmark entry! */ void add_mark(marks_t *marks, char *dirpath, char *entry) { @@ -141,7 +137,6 @@ add_mark(marks_t *marks, char *dirpath, char *entry) marks->nentries++; } -/* If marks->inverse is nonzero, this will actually mark entry! */ void del_mark(marks_t *marks, char *entry) { @@ -260,7 +255,7 @@ update() else strcpy(ROW, FNAME(j)); mvwhline(rover.window, i + 1, 1, ' ', COLS - 2); - if (marking && (MARKED(i) ^ rover.marks.inverse)) + if (marking && MARKED(i)) mvwaddch(rover.window, i + 1, 1, '*'); else mvwaddch(rover.window, i + 1, 1, ' '); @@ -699,19 +694,21 @@ main(int argc, char *argv[]) update(); } else if (!strcmp(key, RVK_INVMARK)) { - rover.marks.inverse = !rover.marks.inverse; + for (i = 0; i < rover.nfiles; i++) { + if (MARKED(i)) + del_mark(&rover.marks, FNAME(i)); + else + add_mark(&rover.marks, CWD, FNAME(i)); + MARKED(i) = !MARKED(i); + } update(); } - else if (!strcmp(key, RVK_TG_MARKALL)) { - strcpy(rover.marks.dirpath, CWD); - if (rover.marks.nentries) { - for (i = 0; i < rover.nfiles; i++) - MARKED(i) = 0; - mark_none(&rover.marks); - rover.marks.inverse = 0; - } - else - rover.marks.inverse = !rover.marks.inverse; + else if (!strcmp(key, RVK_MARKALL)) { + for (i = 0; i < rover.nfiles; i++) + if (!MARKED(i)) { + add_mark(&rover.marks, CWD, FNAME(i)); + MARKED(i) = 1; + } update(); } }