Change recursive delete to be recursive

raytac-diy
Thomas Göttgens 2022-06-22 15:33:53 +02:00
rodzic bc47dd574b
commit e7dfd14917
2 zmienionych plików z 36 dodań i 24 usunięć

Wyświetl plik

@ -2,8 +2,8 @@
#include "FSCommon.h"
void listDir(const char * dirname, uint8_t levels)
#ifdef FSCom
{
#ifdef FSCom
File root = FSCom.open(dirname);
if(!root){
return;
@ -29,29 +29,41 @@ void listDir(const char * dirname, uint8_t levels)
}
void rmDir(const char * dirname)
#ifdef FSCom
{
File root = FSCom.open(dirname);
if(!root){
#ifdef FSCom
File file = FSCom.open(dirname);
if(!file){
return;
}
if(!root.isDirectory()){
if(!file.isDirectory()){
file.close();
FSCom.remove(file.name());
// DEBUG_MSG("Remove FILE %s\n", file.name());
return;
}
File file = root.openNextFile();
while(file){
if(file.isDirectory() && !String(file.name()).endsWith(".")) {
file.close();
rmDir(file.name());
FSCom.rmdir(file.name());
file.rewindDirectory();
while (true) {
File entry = file.openNextFile();
if (!entry) {
break;
}
char dirpath[100]; // array to hold the result.
strcpy(dirpath, dirname); // copy string one into the result.
strcat(dirpath,"/"); // append string two to the result.
strcat(dirpath,entry.name()); // append string two to the result.
if(entry.isDirectory() && !String(entry.name()).endsWith(".")) {
entry.close();
// DEBUG_MSG("Descend DIR %s\n", dirpath);
rmDir(dirpath);
} else {
file.close();
FSCom.remove(file.name());
entry.close();
// DEBUG_MSG("Remove FILE %s\n", entry.name());
FSCom.remove(entry.name());
}
file.close();
file = root.openNextFile();
}
FSCom.rmdir(dirname);
// DEBUG_MSG("Remove DIR %s\n", dirname);
file.close();
#endif
}