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" #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()); }
} else { char dirpath[100]; // array to hold the result.
file.close(); strcpy(dirpath, dirname); // copy string one into the result.
FSCom.remove(file.name()); 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 {
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(); file.close();
#endif #endif
} }

Wyświetl plik

@ -337,16 +337,16 @@ void NodeDB::loadFromDisk()
DEBUG_MSG("Warn: devicestate %d is old, discarding\n", devicestate.version); DEBUG_MSG("Warn: devicestate %d is old, discarding\n", devicestate.version);
installDefaultDeviceState(); installDefaultDeviceState();
#ifndef NO_ESP32 #ifndef NO_ESP32
// This will erase what's in NVS including ssl keys, persistant variables and ble pairing // This will erase what's in NVS including ssl keys, persistant variables and ble pairing
nvs_flash_erase(); nvs_flash_erase();
#endif #endif
#ifdef NRF52_SERIES #ifdef NRF52_SERIES
Bluefruit.begin(); Bluefruit.begin();
DEBUG_MSG("Clearing bluetooth bonds!\n"); DEBUG_MSG("Clearing bluetooth bonds!\n");
bond_print_list(BLE_GAP_ROLE_PERIPH); bond_print_list(BLE_GAP_ROLE_PERIPH);
bond_print_list(BLE_GAP_ROLE_CENTRAL); bond_print_list(BLE_GAP_ROLE_CENTRAL);
Bluefruit.Periph.clearBonds(); Bluefruit.Periph.clearBonds();
Bluefruit.Central.clearBonds(); Bluefruit.Central.clearBonds();
#endif #endif
} else { } else {
DEBUG_MSG("Loaded saved devicestate version %d\n", devicestate.version); DEBUG_MSG("Loaded saved devicestate version %d\n", devicestate.version);