commit fee8bcd62ed96564632764e8f4512ff431538210
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Mon Oct 11 23:36:57 2021 +0000
diff --git a/include/io.h b/include/io.h
index 5a75bad..d7b8529 100644
--- a/include/io.h
+++ b/include/io.h
@@ -296 +299 @@ void terminate_curses(void);
void curses_write_file(struct dir_entry_t *, bool);
char curses_getch(void);
char * prompt(char *, char **);
+char * curses_getline(char *);
+void unmark_all(void);
+void mark_all(void);
extern bool print_path;
extern FILE * stdout_back;
diff --git a/src/io.c b/src/io.c
index 79de4fd..c0726f7 100644
--- a/src/io.c
+++ b/src/io.c
@@ -26 +27 @@
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include "dir.h"
#include "io.h"
@@ -1037 +10413 @@ char curses_getch(void) {
char * ptr = seq;
if (c == 27) {
- *ptr++ = getch();
+ char c = getch();
+ if (c == '[') {
+ *ptr++ = c;
+ } else {
+ ungetch(c);
+ return seq[0];
+ }
*ptr++ = getch();
*ptr++ = '\0';
}
@@ -2103 +21737 @@ done:;
delwin(w);
return NULL;
}
+
+
+char * curses_getline(char * p) {
+ curs_set(1);
+ echo();
+
+ printw("%s", p);
+ refresh();
+
+ char * inp = malloc(128);
+ size_t l = 0;
+ char c;
+ while ((c = getch()) != '\n')
+ inp[l++] = c;
+
+ curs_set(0);
+ noecho();
+
+ return inp;
+}
+
+
+void mark_all(void) {
+ for (size_t i = 0; i < n_dir_entries; i++)
+ dir_entries[i]->marked = true;
+ n_marked_files = n_dir_entries;
+}
+
+
+void unmark_all(void) {
+ for (size_t i = 0; i < n_dir_entries; i++)
+ dir_entries[i]->marked = false;
+ n_marked_files = 0;
+}
diff --git a/src/main.c b/src/main.c
index 6f5d026..158c332 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1726 +17214 @@ int main(int argc, char ** argv) {
if (n_marked_files) n_marked_files--;
}
break;
+ case ':':;
+ char * inp = curses_getline(":");
+ if (!strcmp(inp, "ma"))
+ mark_all();
+ else if (!strcmp(inp, "mu"))
+ unmark_all();
+ free(inp);
+ break;
case 'q':
goto done;
default: