Description
Problem Description (infos below)
in LittleFS, if i have a subdirectory with a single file and i remove it, the directory goes empty and it is ALSO removed, and ALL the empty parent directories back, RECURSIVELY... i know this is the standard behavior but is not always desirable, so searching a way to disable it by inspecting the source code (for some boolean argument, config object or something) i noticed there are none
i would like an official and everyone-available option (because i surely can modify my local source, but i don't feel is the shared spirit of opensource) to disable this auto-erase empty directories feature via a function argument, config or so... i think the fix will be easy and could have multiple options, currently i don't see any way to prevent executing this but hardcoding my source... the related source code is :
Arduino/libraries/LittleFS/src/LittleFS.h
Lines 151 to 161 in 80bf716
to ilustrate a situation when this could be annoying, imagine we have a sketch with a bash-like command line interface
/current/dir/> # as FS doesn't have the "current dir" concept, we maintain it in a global char[] variable
/current/dir/> ls # wrapper for LittleFS.openDir(currentDir) iteration
size file
0 myFile
- 1 object
/current/dir/> remove myFile # wrapper for remove(myFile)... but it will also remove the empty parent dirs after! (getting slower)
/current/dir/> ls # as the current dir was just deleted, a check with LittleFS.exists(currentDir) will generate an error!!
Error: path doesn't exist
/current/dir/> cd .. # back to parent dir, just slicing currentDir global var
/current/> ls # note subdir "dir" now doesn't exists as last seen, what is confusing....
size file
x blah
- (any) object(s)
/current/> # additionally, if this current dir was also emptied and deleted, "ls" would also generate another error!!
Basic Infos
- This issue complies with the issue POLICY doc.
- I have read the documentation at readthedocs and the issue is not addressed there.
- I have tested that the issue is present in current master branch (aka latest git).
- I have searched the issue tracker for a similar issue.
- If there is a stack dump, I have decoded it.
- I have filled out all fields below.
Platform
Hardware: | ESP-12E |
Core Version: | 3.0.2 |
Development Env: | Arduino IDE 1.9 |
Operating System: | Windows |
Settings in IDE
Module: | NodeMCU 1.0 amica v2 compatible |
Flash Mode: | qio, i guess (not relevant for this) |
Flash Size: | 4MB |
lwip Variant: | v2 Lower Memory |
Reset Method: | nodemcu |
Flash Frequency: | 40Mhz |
CPU Frequency: | 80Mhz |
Upload Using: | SERIAL |
Upload Speed: | 115200 |
MCVE Sketch
this is a general case about a lib function, this function will behave the same in any sketch
Debug Messages
i haven't enabled debugging (and i tried but i couldn't.. not relevant anyway)