commit 525917f55c447f8b1319c01ea1791e9b86d0c9f2
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Fri Dec 03 19:20:27 2021 +0000
diff --git a/README.md b/README.md
index 2ead1cc..f2d696c 100644
--- a/README.md
+++ b/README.md
@@ -546 +547 @@ The command prompt will show up upon pressing `:` and the prompt itself is prefi
* `ma`: **M**ark **A**ll files in the directory
* `mu`: **M**ark **U**nmark: Unmarks all files on the directory
+* `ca`: **C**ut **A**ll: Cuts all files in the current directory
#### Renaming
diff --git a/include/commands.h b/include/commands.h
index 0cd8f96..12c038d 100644
--- a/include/commands.h
+++ b/include/commands.h
@@ -37 +37 @@
void ext_open(char *);
long search_file(long, char *);
-void create_cuts(char **);
+void create_cuts(char *, char **);
void free_cuts(void);
void paste_cuts(char *);
diff --git a/src/commands.c b/src/commands.c
index 901ee94..ed65671 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -537 +5311 @@ long search_file(long c, char * s) {
}
-void create_cuts(char ** ls) {
+void create_cuts(char * wd, char ** ls) {
+ cut_start_dir = malloc(strlen(wd));
+ strcpy(cut_start_dir, wd);
+
+ cutting = true;
if (!cuts) cuts = malloc(0);
// if not null, use passed list
if (ls) {
@@ -8813 +9218 @@ void create_cuts(char ** ls) {
void free_cuts(void) {
+ cutting = false;
for (char ** p = cuts; *p; p++)
free(*p);
free(cuts);
cuts = NULL;
+
+ free(cut_start_dir);
+ cut_start_dir = NULL;
}
void paste_cuts(char * path) {
+ cutting = false;
for (char ** p = cuts; *p; p++) {
char old_path[strlen(cut_start_dir) + strlen(*p) + 1];
char new_path[strlen(path) + strlen(*p) + 1];
diff --git a/src/main.c b/src/main.c
index 2b2bb2d..adf28dc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -21142 +21130 @@ int main(int argc, char ** argv) {
case 'c':
// stop cutting if pressed twice
if (cutting) {
- cutting = false;
free_cuts();
- free(cut_start_dir);
- cut_start_dir = NULL;
break;
}
- cutting = true;
// copy cwd to start directory for cuts
- cut_start_dir = malloc(strlen(cwd) + 1);
- strcpy(cut_start_dir, cwd);
if (!n_marked_files) {
char ** args = malloc(sizeof(char*) * 2);
args[0] = malloc(strlen(dir_entries[cursor - 1]->name) + 1);
strcpy(args[0], dir_entries[cursor - 1]->name);
args[1] = NULL;
- create_cuts(args);
+ create_cuts(cwd, args);
free(args[0]);
free(args);
} else
- create_cuts(NULL);
+ create_cuts(cwd, NULL);
break;
case 'p':
if (!cutting) break;
// only paste to different directories
if (!strcmp(cwd, cut_start_dir)) {
- cutting = false;
free_cuts();
- free(cut_start_dir);
- cut_start_dir = NULL;
break;
}
paste_cuts(cwd);
- cutting = false;
free_cuts();
- free(cut_start_dir);
- cut_start_dir = NULL;
free_dir_entries();
list_dir(cwd);
@@ -2616 +24910 @@ int main(int argc, char ** argv) {
mark_all();
else if (!strcmp(inp, "mu"))
unmark_all();
+ else if (!strcmp(inp, "ca") && !cutting) {
+ mark_all();
+ create_cuts(cwd, NULL);
+ }
free(inp);
break;
case '/':;