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:
parent
6c43028227
commit
853b1259b0
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue