diff options
| -rw-r--r-- | components/dfs/filesystems/elmfat/dfs_elm.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/components/dfs/filesystems/elmfat/dfs_elm.c b/components/dfs/filesystems/elmfat/dfs_elm.c index c2ccac1a89..ee3d29962f 100644 --- a/components/dfs/filesystems/elmfat/dfs_elm.c +++ b/components/dfs/filesystems/elmfat/dfs_elm.c @@ -103,7 +103,26 @@ int dfs_elm_mount(struct dfs_filesystem *fs, unsigned long rwflag, const void *d /* mount fatfs, always 0 logic driver */ result = f_mount(index, fat); if (result == FR_OK) + { + char drive[8]; + DIR * dir; + + rt_snprintf(drive, sizeof(drive), "%d:/", fat->drv); + dir = (DIR *)rt_malloc(sizeof(DIR)); + if (dir == RT_NULL) + return -DFS_STATUS_ENOMEM; + + /* open the root directory to test whether the fatfs is valid */ + result = f_opendir(dir, drive); + if (result != FR_OK) + { + rt_free(dir); + return elm_result_to_dfs(result); + } + rt_free(dir); + fs->data = fat; + } else { rt_free(fat); |
