From 6c27e71edbff1612f5f461f05644a7045c2344af Mon Sep 17 00:00:00 2001 From: Thomas Farstrike <111072251+ThomasFarstrike@users.noreply.github.com> Date: Sun, 23 Nov 2025 08:25:11 +0100 Subject: [PATCH] fs_driver.py: fix _fs_dir_open_cb for VfsFat While testing with an SD card that has a FAT filesystem on it, I noticed that, unlike LittleFS, VfsFat returns an [Errno 22] EINVAL when a directory has a trailing slash. This fix removes the trailing slash, except for the root directory. --- api_drivers/py_api_drivers/fs_driver.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api_drivers/py_api_drivers/fs_driver.py b/api_drivers/py_api_drivers/fs_driver.py index 988d82c5..428b9885 100644 --- a/api_drivers/py_api_drivers/fs_driver.py +++ b/api_drivers/py_api_drivers/fs_driver.py @@ -78,9 +78,11 @@ def _fs_dir_open_cb(drv, path): #print(f"_fs_dir_open_cb for path '{path}'") try: import os # for ilistdir() + if path != "/": + path = path.rstrip('/') # LittleFS handles trailing flashes fine, but vfs.VfsFat returns an [Errno 22] EINVAL return {'iterator' : os.ilistdir(path)} except Exception as e: - print(f"_fs_dir_open_cb exception: {e}") + print(f"_fs_dir_open_cb exception for path {path}: {e}") return None def _fs_dir_read_cb(drv, lv_fs_dir_t, buf, btr):