From 56527c107b001a686029584c3b6a20fac6d416e7 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 23 Jun 2022 11:22:57 +0300 Subject: [PATCH] Fixed delete folder --- handler.h | 19 ++++++++++--------- main.c | 30 ++++++++++++++++-------------- structs.c | 15 ++++++++++++--- work1 | Bin 26600 -> 26600 bytes 4 files changed, 38 insertions(+), 26 deletions(-) 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 06579e75414e2f3f820f9b3f152207a7449636ca..44a3be5b6253baa9194dc82efd53a74a84bf382b 100755 GIT binary patch delta 4700 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 Tdwc$DeQl=Z0fRWx=p+ zK;o5@$+S&$oYrLWgV`EsYT3nD7O4r?R%MLfR?s{I6|hD|iLc*zZ+8JFo$kzX?)}bp zzH{!m_ua=z&AimiSGEM_W^l?UH{-1rg7AjH9;yxI%|_8$B#G8Sw`k326|Gq<8CKKzCDtsbXfsK5?-(F#bxCy( zWVzH?m|!V7&lLvO@+hn882*5y6KxcztEE!A4yvG3XZA#vsF9))IY#9}(lpQ=gh{KJ zhH$#Mf^nD+)R8o0JTjK!x=jj1!URYoY@8k^`Db6sXtcq%2L$JX-i*w zOuL*_i9OaBbOxIQv}dgmvq&vPS60C)S`}2tV=qJvCTB-IlB9L-b0<%zy4CDLQk$IQ(l^{ z%o-g3KyA_yKeW?};gRwV8yuI({Y=0xcY~viuvlQ`VZ;ssM-!0_7rN6$z(fBbpqGFy zFJLp~ixvqFm515lby&~TJpj}3i0CIqjmWHMo{R8e|c-PIQEyw=+Srksc8e2 zq5%W@cjVMS=PYQs`k8J*HfxRy6n@&zS|eu!>SqIfmf&Kcw~rm3uv6IG$3iB~5*GF` z)5L9|Tp#s{ZU>i?(aW3@BYvD^**sQY~jzVC|yyvQ%}~ZjRFMQI&UwlEqViC-Ig$?6=VqLwt#)ad%mLbVU46 zmVQJ!^64u(}}{IZ|n!24&?nd+>m89KW-Xx#y=alm3o(SgFTAh z5|WRxdU4+9WZM(Q2ks$fbtii>AvMI}a~|wue@lqVC?n^rPO1f+wK&sg6Ah@>k^e)l zjtIA-8dE8hM#tx1^oMt&Vk zKV@S`)dFuo!*y0MB{HxEfVBI%{lh6mJfFvsld|ZgA&EBQ7HZ3OH*OT22gxU7Cp|S_ zpnt+kc&Bv?cN#&*Tgc+%Sx3@iVfQuGkvwCp=^8@#RxFe!g@$V^VcOETKM-omX+%8k z66O8C6o{@&m-I$EJ3MV}{DF3g{Q{&~#N)uYq+JR`aso{U+99_fyjCp#QT#BiR;_HElX}NF|6P{du=im(f#aH*WmymVs}@-{!scE;JnY1OAs%+@Ma07%gLT51XI+8- z2ET{p@XpD;3<21itq_3y%@qj1R-om3VNYL&0PG<=OitLon}~-sONhrc{5c-dsj&OI zu^+IlJ+iz7R=h3CHL&yvR}IJS$!7NS2%*)*n$pvRvIh1rJ<+@kOOGMO^P#%^Li(71 zRUv^vm{NOk@qHP7dcFDl!hVH7{t|pI!M}EdUlkz#F?_?(%Ab$$Z}i2VrGHA+fbi)E z!bd(rC-B?wU&NAq1!!6{M4$wI*o&iI%JL^8;y>`k$HPD4D?FAX{5O663_hLX20=K9 zJsC<+BX|?!Lf|cI>c9wrdp>~@__wlsrfC0T7+u9EcEgMR{NF3?1nX`1|1?7H6Q7PW`nISk%VJqLMjJ@IsQ7@rxtVLDFEgAr}%_q8P#tbng&In8glN|K*fr3C(P+#i=< zhq7Got@;@7Cblm#Hf|Iy#flNNSe07h5!eaVE>@p8g+IW$GGm3A->~3CF~Sy!B`?b4 zEA6i=dN;scxk#^Jx}`>;GsT|0v|aN;Cw@3Q`O$D%j!XSMT*rBTm<*56aAUbLqkT_y zJ8#f?;=HH*G>AO(+%r_Ym7c)!9^7bP2bQH7xMx)NlVSAkr_YmN`q}K(vNU0R28+t6 z5a?G@PNv{aVf{Hfh2#YGi{&w4${|Cj3;hb?#&Frm?49L1v2Yf)Vy&=jGTX6Y?T=@U zH@|WX2_TaZXeC0sE_h%1oO*AUZ3KqBWlp*Me=KTx@gH#7~ zDoZ)u;O_uFR%td1UX>R0`UKT|f_5063Qt&m3d>%VCPYqU#j7%fm}#tORc6$QaYlut zJPH`y@sOuSvE