]> Chaos Git - corbenik/ctrulib.git/commitdiff
Add romfsInitFromFile()
authorfincs <fincs.alt1@gmail.com>
Fri, 18 Sep 2015 21:17:12 +0000 (23:17 +0200)
committerfincs <fincs.alt1@gmail.com>
Fri, 18 Sep 2015 21:17:12 +0000 (23:17 +0200)
libctru/include/3ds/romfs.h
libctru/source/romfs_dev.c

index 6a160a1bc1a9e3aa248a0fcf631204da7ebfebf2..0dc5789a160754c20a48651a5ae28347a572d4ca 100644 (file)
@@ -31,4 +31,5 @@ typedef struct
 } romfs_file;
 
 Result romfsInit(void);
+Result romfsInitFromFile(Handle file, u32 offset);
 Result romfsExit(void);
index b88774607e0556e319437ee3fe048679930b5298..31e1263a0bc1d7cd69b2f149233c95e460c46543 100644 (file)
@@ -111,6 +111,8 @@ typedef struct
        u32 fsOffset;
 } _3DSX_Header;
 
+static Result romfsInitCommon(void);
+
 Result romfsInit(void)
 {
        if (romFS_active) return 0;
@@ -159,6 +161,23 @@ Result romfsInit(void)
                if (rc) return rc;
        }
 
+       return romfsInitCommon();
+
+_fail0:
+       FSFILE_Close(romFS_file);
+       return 10;
+}
+
+Result romfsInitFromFile(Handle file, u32 offset)
+{
+       if (romFS_active) return 0;
+       romFS_file = file;
+       romFS_offset = offset;
+       return romfsInitCommon();
+}
+
+Result romfsInitCommon(void)
+{
        if (_romfs_read(0, &romFS_header, sizeof(romFS_header)) != sizeof(romFS_header))
                goto _fail0;