add f_opendir to open root directory in dfs_elm_mount to make sure that there is a valid fat

partition on physical media.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2251 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
goprife@gmail.com 2012-08-08 15:46:48 +00:00
parent 3dbbc479fc
commit 063fb36089
1 changed files with 19 additions and 0 deletions

View File

@ -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);