Change recursive delete to be recursive

This commit is contained in:
Thomas Göttgens 2022-06-22 15:33:53 +02:00
parent bc47dd574b
commit e7dfd14917
2 changed files with 36 additions and 24 deletions

View File

@ -2,8 +2,8 @@
#include "FSCommon.h" #include "FSCommon.h"
void listDir(const char * dirname, uint8_t levels) void listDir(const char * dirname, uint8_t levels)
#ifdef FSCom
{ {
#ifdef FSCom
File root = FSCom.open(dirname); File root = FSCom.open(dirname);
if(!root){ if(!root){
return; return;
@ -29,29 +29,41 @@ void listDir(const char * dirname, uint8_t levels)
} }
void rmDir(const char * dirname) void rmDir(const char * dirname)
#ifdef FSCom
{ {
File root = FSCom.open(dirname); #ifdef FSCom
if(!root){ File file = FSCom.open(dirname);
if(!file){
return; return;
} }
if(!root.isDirectory()){ if(!file.isDirectory()){
file.close();
FSCom.remove(file.name());
// DEBUG_MSG("Remove FILE %s\n", file.name());
return; return;
} }
File file = root.openNextFile(); file.rewindDirectory();
while(file){ while (true) {
if(file.isDirectory() && !String(file.name()).endsWith(".")) { File entry = file.openNextFile();
file.close(); if (!entry) {
rmDir(file.name()); break;
FSCom.rmdir(file.name()); }
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 { } else {
file.close(); entry.close();
FSCom.remove(file.name()); // 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(); file.close();
#endif #endif
} }