diff --git a/handler.h b/handler.h index 5c1ba09..7b7fc0f 100644 --- a/handler.h +++ b/handler.h @@ -247,7 +247,7 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File * else print_list(PrintDirectory, 0); - + return SUCCESS; } @@ -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; @@ -270,16 +272,16 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File * { printf("FIND!\n"); - char* buf = (char*) malloc(MAX_ARG_LEN); - char* fname = (char*) malloc(MAX_ARG_LEN); - char* ext = (char*) malloc(MAX_ARG_LEN); + char *buf = (char *)malloc(MAX_ARG_LEN); + char *fname = (char *)malloc(MAX_ARG_LEN); + char *ext = (char *)malloc(MAX_ARG_LEN); int count = 0; printf("MinorArg: %s\n", minorArg); strcpy(buf, minorArg); - char* sep = "."; - char* istr = strtok(buf, sep); + char *sep = "."; + char *istr = strtok(buf, sep); while (istr != NULL) { @@ -298,7 +300,7 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File * istr = strtok(NULL, sep); } - + printf("Count: %d\n", count); if (count == 1) @@ -345,7 +347,6 @@ int commandParserHandler(char *input, Folder *RootFolder, Folder **CurrentFolder str[i] = ' '; } } - istr = strtok(str, sep); @@ -431,7 +432,7 @@ int commandParserHandler(char *input, Folder *RootFolder, Folder **CurrentFolder istr = strtok(NULL, sep); // Выделяем следующую часть } - printf("%d: %s, %s, %s\n", i ,command, arg1, arg2); + printf("%d: %s, %s, %s\n", i, command, arg1, arg2); result = executeCommand(command, arg1, ResultFolder, ResultFile, ResultFolder != NULL, RootFolder, CurrentFolder); // printf("- exec: %d", r); diff --git a/main.c b/main.c index 243d3ae..5475300 100644 --- a/main.c +++ b/main.c @@ -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); @@ -52,22 +54,22 @@ int main(int argc, char **argv) // else // printf("ResultFolder is NULL\n"); - - char *buf; - while (1) + char *buf; + + while (1) + { + printf("%s > ", CurrentFolder->filename); + buf = commandCallHandler(); + + if (buf == NULL) { - printf("%s > ", CurrentFolder->filename); - buf = commandCallHandler(); - - if (buf == NULL) - { - printf("Input too long!\n"); - } - - iResult = commandParserHandler(buf, &RootFolder, &CurrentFolder); - printf("result: %d\n", iResult); + printf("Input too long!\n"); } + iResult = commandParserHandler(buf, &RootFolder, &CurrentFolder); + printf("result: %d\n", iResult); + } + return 0; } \ No newline at end of file diff --git a/structs.c b/structs.c index 146b479..040150e 100644 --- a/structs.c +++ b/structs.c @@ -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) diff --git a/work1 b/work1 index 06579e7..44a3be5 100755 Binary files a/work1 and b/work1 differ