commit 3465b0a7001392cf9d874e9f2b81d790a4733f46
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Mon Oct 11 22:41:29 2021 +0000
diff --git a/include/dir.h b/include/dir.h
index 7e9075c..c9015ab 100644
--- a/include/dir.h
+++ b/include/dir.h
@@ -86 +87 @@ int list_dir(char *);
void free_dir_entries(void);
void cd_back(void);
void enter_dir(char *);
+void remove_marked(void);
enum file_type_t {
diff --git a/src/dir.c b/src/dir.c
index 32c2773..03bb073 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -66 +67 @@
#include <stdbool.h>
#include "dir.h"
+#include "io.h"
char * cwd = NULL;
@@ -1263 +12714 @@ void enter_dir(char * name) {
strcat(cwd, name);
setenv("PWD", cwd, true);
}
+
+
+void remove_marked(void) {
+ for (size_t i = 0; i < n_dir_entries; i++) {
+ if (dir_entries[i]->marked) {
+ char p[strlen(cwd) + strlen(dir_entries[i]->name) + 1];
+ sprintf(p, "%s/%s", cwd, dir_entries[i]->name);
+ if (remove(p) == 0) n_marked_files--;
+ }
+ }
+}
diff --git a/src/main.c b/src/main.c
index 4231b67..6f5d026 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1309 +13023 @@ int main(int argc, char ** argv) {
case 'd':
if (dir_entries[cursor - 1]->file_type == FILE_DIR)
break;
+ char * args[] = {"No", "Yes", NULL};
+ if (n_marked_files) {
+ char * p = malloc(40);
+ sprintf(p, "Remove all marked files? (%lu)", n_marked_files);
+ char * resp = prompt(p, args);
+ free(p);
+ if (!resp || strcmp(resp, "Yes")) break;
+ remove_marked();
+ free_dir_entries();
+ list_dir(cwd);
+ cursor = 1;
+ first_f = 0;
+ last_f = LAST_F;
+ break;
+ }
char * name = dir_entries[cursor - 1]->name;
char * p = malloc(20 + strlen(name));
- char * args[] = {"No", "Yes", NULL};
sprintf(p, "Delete the file '%s'?", name);
char * resp = prompt(p, args);
free(p);