diff --git a/platformio.ini b/platformio.ini index dcec29a5..e946f77c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -26,6 +26,8 @@ build_flags = -DXML_GE=0 -DXML_CONTEXT_BYTES=1024 -std=c++2a +# Enable UTF-8 long file names in SdFat + -DUSE_UTF8_LONG_NAMES=1 ; Board configuration board_build.flash_mode = dio diff --git a/src/activities/reader/FileSelectionActivity.cpp b/src/activities/reader/FileSelectionActivity.cpp index 4f4ed9dc..4510f9bc 100644 --- a/src/activities/reader/FileSelectionActivity.cpp +++ b/src/activities/reader/FileSelectionActivity.cpp @@ -30,7 +30,15 @@ void FileSelectionActivity::taskTrampoline(void* param) { void FileSelectionActivity::loadFiles() { files.clear(); selectorIndex = 0; + auto root = SdMan.open(basepath.c_str()); + if (!root || !root.isDirectory()) { + if (root) root.close(); + return; + } + + root.rewindDirectory(); + char name[128]; for (auto file = root.openNextFile(); file; file = root.openNextFile()) { file.getName(name, sizeof(name));