From df5e80bb98e6a775d774dc9427628d07005c29d6 Mon Sep 17 00:00:00 2001 From: d0k3 Date: Mon, 7 Aug 2017 23:33:08 +0200 Subject: [PATCH] Fix mounting FAT / NAND images fixes #142 --- source/filesys/fsinit.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/filesys/fsinit.c b/source/filesys/fsinit.c index b710d0b..c797c98 100644 --- a/source/filesys/fsinit.c +++ b/source/filesys/fsinit.c @@ -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; + char fsname[8]; for (; drv_i < NORM_FS; drv_i++) { - char fsname[8]; 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); }