Fix mounting FAT / NAND images

fixes #142
This commit is contained in:
d0k3 2017-08-07 23:33:08 +02:00
parent 4dddd8aeeb
commit df5e80bb98

View File

@ -36,20 +36,20 @@ bool InitExtFS() {
bool InitImgFS(const char* path) {
// find drive # of the last image FAT drive
u32 drv_i = NORM_FS - IMGN_FS;
for (; drv_i < NORM_FS; drv_i++) {
char fsname[8];
for (; drv_i < NORM_FS; drv_i++) {
snprintf(fsname, 7, "%lu:", drv_i);
if (!(DriveType(fsname)&DRV_IMAGE))
break;
if (!(DriveType(fsname)&DRV_IMAGE)) break;
}
// deinit image filesystem
DismountDriveType(DRV_IMAGE);
// (re)mount image, done if path == NULL
MountImage(path);
u32 type = MountImage(path);
InitVirtualImageDrive();
if ((type&IMG_NAND) && (drv_i < NORM_FS)) drv_i = NORM_FS;
else if ((type&IMG_FAT) && (drv_i < NORM_FS - IMGN_FS + 1)) drv_i = NORM_FS - IMGN_FS + 1;
// reinit image filesystem
for (u32 i = NORM_FS - IMGN_FS; i < drv_i; i++) {
char fsname[8];
snprintf(fsname, 7, "%lu:", i);
fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK);
}