Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 525917f55c447f8b1319c01ea1791e9b86d0c9f2 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Fri Dec 03 19:20:27 2021 +0000 added 'ca' command 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 '/':;