Fixed delete folder

master
root 2022-06-23 11:22:57 +03:00
parent 1def9ab053
commit 56527c107b
4 changed files with 38 additions and 26 deletions

View File

@ -256,11 +256,13 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File *
if (!majorArgIsFolder)
{
// Работаем с файлом, удаление MajorArgFile
delete_file(majorArgFile);
}
else
{
// Работаем с папкой, рекурсивное удаление MajorArgFolder
delete_folder(majorArgFolder);
}
return SUCCESS;
@ -346,7 +348,6 @@ int commandParserHandler(char *input, Folder *RootFolder, Folder **CurrentFolder
}
}
istr = strtok(str, sep);
char *command = (char *)malloc(MAX_COMMAND_LEN);

4
main.c
View File

@ -23,6 +23,8 @@ int main(int argc, char **argv)
addFolder("test11", &RootFolder.folders[0].folders[1]);
addFile("test", "exe", &RootFolder.folders[0]);
print_list(&RootFolder, 1);
// print_path(&RootFolder.folders[0].folders[0], NULL);
// print_path(NULL, &RootFolder.folders[0].files[0]);
@ -31,7 +33,7 @@ int main(int argc, char **argv)
// find_file("test", "exe", &RootFolder);
// delete_folder(&RootFolder.folders[0].folders[1].folders[0]);
delete_folder(&RootFolder.folders[0]);
// find_folder("test11", &RootFolder);

View File

@ -275,6 +275,13 @@ void delete_file(File *deleting)
void delete_folder(Folder *deleting)
{
// char *p = (char *)malloc(1);
// p[0] = '\0';
// get_path(p, deleting, NULL);
// printf("%d\n", deleting->folders_count_cur);
// printf("%d\n", deleting->parent->folders_count_cur);
// print_list(deleting, 1);
int i; // iterator
int fold_ind = -1;
if (deleting != NULL)
@ -287,20 +294,22 @@ void delete_folder(Folder *deleting)
fold_ind = i;
}
printf("%d\n", fold_ind);
free(deleting->files);
while (deleting->folders_count_cur)
{
delete_folder(&(deleting->folders[0]));
delete_folder(&(deleting->folders[deleting->folders_count_cur - 1]));
}
free(deleting->folders);
for (i = fold_ind + 1; i < parent->folders_count_cur; i++)
for (i = fold_ind; i < parent->folders_count_cur; i++)
{
parent->folders[i] = parent->folders[i + 1];
}
parent->folders[parent->folders_count_cur - 1];
parent->folders_count_cur--;
}
// print_list(deleting->parent, 1);
}
int get_path(char *path, Folder *fld, File *fil)

BIN
work1

Binary file not shown.