Fixed delete folder
parent
1def9ab053
commit
56527c107b
15
handler.h
15
handler.h
|
@ -256,11 +256,13 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File *
|
||||||
if (!majorArgIsFolder)
|
if (!majorArgIsFolder)
|
||||||
{
|
{
|
||||||
// Работаем с файлом, удаление MajorArgFile
|
// Работаем с файлом, удаление MajorArgFile
|
||||||
|
delete_file(majorArgFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Работаем с папкой, рекурсивное удаление MajorArgFolder
|
// Работаем с папкой, рекурсивное удаление MajorArgFolder
|
||||||
|
delete_folder(majorArgFolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
@ -270,16 +272,16 @@ int executeCommand(char *command, char *minorArg, Folder *majorArgFolder, File *
|
||||||
{
|
{
|
||||||
printf("FIND!\n");
|
printf("FIND!\n");
|
||||||
|
|
||||||
char* buf = (char*) malloc(MAX_ARG_LEN);
|
char *buf = (char *)malloc(MAX_ARG_LEN);
|
||||||
char* fname = (char*) malloc(MAX_ARG_LEN);
|
char *fname = (char *)malloc(MAX_ARG_LEN);
|
||||||
char* ext = (char*) malloc(MAX_ARG_LEN);
|
char *ext = (char *)malloc(MAX_ARG_LEN);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
printf("MinorArg: %s\n", minorArg);
|
printf("MinorArg: %s\n", minorArg);
|
||||||
strcpy(buf, minorArg);
|
strcpy(buf, minorArg);
|
||||||
|
|
||||||
char* sep = ".";
|
char *sep = ".";
|
||||||
char* istr = strtok(buf, sep);
|
char *istr = strtok(buf, sep);
|
||||||
|
|
||||||
while (istr != NULL)
|
while (istr != NULL)
|
||||||
{
|
{
|
||||||
|
@ -346,7 +348,6 @@ int commandParserHandler(char *input, Folder *RootFolder, Folder **CurrentFolder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
istr = strtok(str, sep);
|
istr = strtok(str, sep);
|
||||||
|
|
||||||
char *command = (char *)malloc(MAX_COMMAND_LEN);
|
char *command = (char *)malloc(MAX_COMMAND_LEN);
|
||||||
|
@ -431,7 +432,7 @@ int commandParserHandler(char *input, Folder *RootFolder, Folder **CurrentFolder
|
||||||
istr = strtok(NULL, sep); // Выделяем следующую часть
|
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);
|
result = executeCommand(command, arg1, ResultFolder, ResultFile, ResultFolder != NULL, RootFolder, CurrentFolder);
|
||||||
// printf("- exec: %d", r);
|
// printf("- exec: %d", r);
|
||||||
|
|
||||||
|
|
28
main.c
28
main.c
|
@ -23,6 +23,8 @@ int main(int argc, char **argv)
|
||||||
addFolder("test11", &RootFolder.folders[0].folders[1]);
|
addFolder("test11", &RootFolder.folders[0].folders[1]);
|
||||||
addFile("test", "exe", &RootFolder.folders[0]);
|
addFile("test", "exe", &RootFolder.folders[0]);
|
||||||
|
|
||||||
|
print_list(&RootFolder, 1);
|
||||||
|
|
||||||
// print_path(&RootFolder.folders[0].folders[0], NULL);
|
// print_path(&RootFolder.folders[0].folders[0], NULL);
|
||||||
|
|
||||||
// print_path(NULL, &RootFolder.folders[0].files[0]);
|
// print_path(NULL, &RootFolder.folders[0].files[0]);
|
||||||
|
@ -31,7 +33,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
// find_file("test", "exe", &RootFolder);
|
// find_file("test", "exe", &RootFolder);
|
||||||
|
|
||||||
// delete_folder(&RootFolder.folders[0].folders[1].folders[0]);
|
delete_folder(&RootFolder.folders[0]);
|
||||||
|
|
||||||
// find_folder("test11", &RootFolder);
|
// find_folder("test11", &RootFolder);
|
||||||
|
|
||||||
|
@ -53,21 +55,21 @@ int main(int argc, char **argv)
|
||||||
// else
|
// else
|
||||||
// printf("ResultFolder is NULL\n");
|
// printf("ResultFolder is NULL\n");
|
||||||
|
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
{
|
||||||
|
printf("%s > ", CurrentFolder->filename);
|
||||||
|
buf = commandCallHandler();
|
||||||
|
|
||||||
|
if (buf == NULL)
|
||||||
{
|
{
|
||||||
printf("%s > ", CurrentFolder->filename);
|
printf("Input too long!\n");
|
||||||
buf = commandCallHandler();
|
|
||||||
|
|
||||||
if (buf == NULL)
|
|
||||||
{
|
|
||||||
printf("Input too long!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
iResult = commandParserHandler(buf, &RootFolder, &CurrentFolder);
|
|
||||||
printf("result: %d\n", iResult);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iResult = commandParserHandler(buf, &RootFolder, &CurrentFolder);
|
||||||
|
printf("result: %d\n", iResult);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
15
structs.c
15
structs.c
|
@ -275,6 +275,13 @@ void delete_file(File *deleting)
|
||||||
|
|
||||||
void delete_folder(Folder *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 i; // iterator
|
||||||
int fold_ind = -1;
|
int fold_ind = -1;
|
||||||
if (deleting != NULL)
|
if (deleting != NULL)
|
||||||
|
@ -287,20 +294,22 @@ void delete_folder(Folder *deleting)
|
||||||
fold_ind = i;
|
fold_ind = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("%d\n", fold_ind);
|
||||||
|
|
||||||
free(deleting->files);
|
free(deleting->files);
|
||||||
while (deleting->folders_count_cur)
|
while (deleting->folders_count_cur)
|
||||||
{
|
{
|
||||||
delete_folder(&(deleting->folders[0]));
|
delete_folder(&(deleting->folders[deleting->folders_count_cur - 1]));
|
||||||
}
|
}
|
||||||
free(deleting->folders);
|
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[i] = parent->folders[i + 1];
|
||||||
}
|
}
|
||||||
parent->folders[parent->folders_count_cur - 1];
|
|
||||||
parent->folders_count_cur--;
|
parent->folders_count_cur--;
|
||||||
}
|
}
|
||||||
|
// print_list(deleting->parent, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_path(char *path, Folder *fld, File *fil)
|
int get_path(char *path, Folder *fld, File *fil)
|
||||||
|
|
Loading…
Reference in New Issue