commit 4902e33ab2ee585e408c5d672b538178b8edfef7
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Mon Oct 11 22:25:01 2021 +0000
diff --git a/include/dir.h b/include/dir.h
index ad077d9..7e9075c 100644
--- a/include/dir.h
+++ b/include/dir.h
@@ -246 +247 @@ struct dir_entry_t {
char * name;
enum file_type_t file_type;
bool exec;
+ bool marked;
};
diff --git a/include/io.h b/include/io.h
index 883472c..5a75bad 100644
--- a/include/io.h
+++ b/include/io.h
@@ -323 +324 @@ char * prompt(char *, char **);
extern bool print_path;
extern FILE * stdout_back;
+extern size_t n_marked_files;
diff --git a/src/dir.c b/src/dir.c
index 2536ead..32c2773 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -848 +849 @@ int list_dir(char * dir_path) {
free(buf);
- dir_entries[n_dir_entries] = dir_entry;
+ dir_entry->marked = false;
+ dir_entries[n_dir_entries] = dir_entry;
n_dir_entries++;
}
diff --git a/src/io.c b/src/io.c
index 5b36987..79de4fd 100644
--- a/src/io.c
+++ b/src/io.c
@@ -86 +87 @@
bool print_path = false;
FILE * stdout_back = NULL;
+size_t n_marked_files = false;
void curses_init(void) {
if (print_path) {
@@ -876 +887 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
cp = COLOR_PAIR((unsigned)cp);
if (highlight) cp |= A_REVERSE;
+ if (dir_entry->marked) printw("%c ", '-');
attron(cp);
printw("%s", dir_entry->name);
attroff(cp);
diff --git a/src/main.c b/src/main.c
index e56fee8..4231b67 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6210 +6211 @@ int main(int argc, char ** argv) {
// print files
for (size_t i = first_f; i < last_f; i++) {
+ bool h = false;
if (cursor - 1 == i)
- curses_write_file(dir_entries[i], true);
- else
- curses_write_file(dir_entries[i], false);
+ h = true;
+
+ curses_write_file(dir_entries[i], h);
}
// print cursor / total entries
@@ -1486 +14915 @@ int main(int argc, char ** argv) {
last_f = LAST_F;
}
break;
+ case 'm':
+ if (!dir_entries[cursor - 1]->marked) {
+ dir_entries[cursor - 1]->marked = true;
+ n_marked_files++;
+ } else {
+ dir_entries[cursor - 1]->marked = false;
+ if (n_marked_files) n_marked_files--;
+ }
+ break;
case 'q':
goto done;
default: