From 93d198cabfb632882fb3b1751a1a303d6ceddfd3 Mon Sep 17 00:00:00 2001 From: Numillyah Date: Wed, 22 Jun 2022 21:57:50 +0300 Subject: [PATCH] invented "delete" function --- structs.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/structs.c b/structs.c index 13b92d6..55a27e6 100644 --- a/structs.c +++ b/structs.c @@ -250,3 +250,55 @@ int print_list(Folder *fld, int mode) printf("└──────────┴──────────┴────────────────────────────────────────────────────┘\n"); } } + +void delete_file(File *deleting) +{ + int i; //iterator + int file_ind=-1; + if (deleting != NULL) { + Folder* parent = deleting->parent; + + for (i = 0; i < parent->files_count_cur; i++) + { + if (parent->files[i] == deleting) + file_ind = i; + } + + for (i = file_ind+1; i < parent->files_count_cur; i++) + { + parent->files[i] = parent->files[i + 1]; + } + + parent->files[parent->files_count_cur - 1] = NULL; + parent->files_count_cur--; + } +} + +void delete_folder(Folder* deleting) +{ + int i; //iterator + int fold_ind = -1; + if (deleting != NULL) { + Folder* parent = deleting->parent; + + for (i = 0; i < parent->folders_count_cur; i++) + { + if (parent->folders[i] == deleting) + fold_ind = i; + } + + free(deleting->files); + while (deleting->folders_count_cur) + { + delete_folder(deleting->folders[0]); + } + free(deleting->folders); + + for (i = fold_ind + 1; i < parent->folders_count_cur; i++) + { + parent->folders[i] = parent->folders[i + 1]; + } + parent->folders[parent->folders_count_cur - 1] = NULL; + parent->folders_count_cur--; + } +}