add chk_mounted 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@2248 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
goprife@gmail.com 2012-08-08 15:09:30 +00:00
parent 6c43028227
commit 853b1259b0
2 changed files with 26 additions and 1 deletions

View File

@ -103,7 +103,27 @@ 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)
{
extern FRESULT chk_mounted(const TCHAR **path, FATFS **rfs, BYTE chk_wp);
extern void leavefs(FATFS* fs, int res);
char driver[16];
const char * path;
DIR dj;
path = (const char *)driver;
rt_snprintf(driver, sizeof(driver), "%d:/", fat->drv);
#if !_FS_READONLY
result = chk_mounted(&path, &dj.fs, 1);
#else
result = chk_mounted(&path, &dj.fs, 0);
#endif
if (result != FR_OK)
{
rt_free(fat);
return -1;
}
leavefs(dj.fs, result);
fs->data = fat;
}
else
{
rt_free(fat);

View File

@ -2004,7 +2004,7 @@ BYTE check_fs ( /* 0:The FAT BR, 1:Valid BR but not an FAT, 2:Not a BR, 3:Disk e
/* Check if the file system object is valid or not */
/*-----------------------------------------------------------------------*/
static
FRESULT chk_mounted ( /* FR_OK(0): successful, !=0: any error occurred */
const TCHAR **path, /* Pointer to pointer to the path name (drive number) */
FATFS **rfs, /* Pointer to pointer to the found file system object */
@ -4019,3 +4019,8 @@ int elm_get_vol(FATFS *fat)
return -1;
}
#endif
void leavefs(FATFS* fs, int res)
{
LEAVE_FF(fs, res);
}