summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/dfs/filesystems/elmfat/dfs_elm.c19
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);