Adaptation of the official mbed FATFileSystem repository to allow more than one file system volume
Dependents: DMSupport DMSupport DMSupport
Fork of DM_FATFileSystem by
Diff: FATFileSystem.cpp
- Revision:
- 7:edfd01fea6d7
- Parent:
- 4:3ff2606d5713
--- a/FATFileSystem.cpp Tue Dec 02 15:09:28 2014 +0000 +++ b/FATFileSystem.cpp Thu Dec 11 11:07:47 2014 +0000 @@ -68,7 +68,7 @@ FileHandle *FATFileSystem::open(const char* name, int flags) { debug_if(FFS_DBG, "open(%s) on filesystem [%s], drv [%d]\n", name, _name, _fsid); char n[64]; - sprintf(n, "%d:/%s", _fsid, name); + snprintf(n, 64, "%d:/%s", _fsid, name); /* POSIX flags -> FatFS open mode */ BYTE openmode; @@ -127,8 +127,13 @@ } DirHandle *FATFileSystem::opendir(const char *name) { + // Added by Embedded Artists to fix implementation when using more than one volume + debug_if(FFS_DBG, "opendir(%s) on filesystem [%s], drv [%d]\n", name, _name, _fsid); + char n[64]; + snprintf(n, 64, "%d:/%s", _fsid, name); + FATFS_DIR dir; - FRESULT res = f_opendir(&dir, name); + FRESULT res = f_opendir(&dir, n); if (res != 0) { return NULL; } @@ -136,7 +141,12 @@ } int FATFileSystem::mkdir(const char *name, mode_t mode) { - FRESULT res = f_mkdir(name); + // Added by Embedded Artists to fix implementation when using more than one volume + debug_if(FFS_DBG, "mkdir(%s) on filesystem [%s], drv [%d]\n", name, _name, _fsid); + char n[64]; + snprintf(n, 64, "%d:/%s", _fsid, name); + + FRESULT res = f_mkdir(n); return res == 0 ? 0 : -1; }