]> Chaos Git - corbenik/ctrulib.git/commitdiff
Update fs.c to allow initialization from non-fs:USER handles (like fs:LDR)
authorchaoskagami <chaos.kagami@gmail.com>
Fri, 14 Oct 2016 04:14:48 +0000 (00:14 -0400)
committerchaoskagami <chaos.kagami@gmail.com>
Fri, 14 Oct 2016 04:14:48 +0000 (00:14 -0400)
libctru/include/3ds/services/fs.h
libctru/source/services/fs.c
libctru/source/system/appInit.c

index 8db6c152496f6f401e3881f53e0e42febecbc95a..8dbc026a9cbfb0ca839e475d06ceb96f2d2e2bfd 100644 (file)
@@ -237,8 +237,14 @@ typedef struct
 /// Filesystem archive handle, providing access to a filesystem's contents.
 typedef u64 FS_Archive;
 
-/// Initializes FS.
-Result fsInit(void);
+/**
+ * @brief Initializes FS from a service name, such as "fs:USER" or "fs:LDR"
+ * @param service The name of the service to initialize from.
+ */
+Result fsInitFromService(const char *service);
+
+/// Initializes FS with the fs:USER service.
+Result fsInitDefault(void);
 
 /// Exits FS.
 void fsExit(void);
index db1a75f39f94a83879cc6bdd2f2976613f8b50e4..459798a4d4772ca9ab4e0416c6ab73c2581e9852 100644 (file)
@@ -35,14 +35,13 @@ static Handle fsSessionForArchive(FS_Archive archive)
        return fsSession();
 }
 
-Result fsInit(void)
-{
+Result fsInitFromService(const char* service) {
        Result ret = 0;
 
        if (AtomicPostIncrement(&fsuRefCount)) return 0;
 
-       ret = srvGetServiceHandle(&fsuHandle, "fs:USER");
-       if (R_SUCCEEDED(ret) && envGetHandle("fs:USER") == 0)
+       ret = srvGetServiceHandle(&fsuHandle, service);
+       if (R_SUCCEEDED(ret) && envGetHandle(service) == 0)
        {
                ret = FSUSER_Initialize(fsuHandle);
                if (R_FAILED(ret)) svcCloseHandle(fsuHandle);
@@ -52,6 +51,11 @@ Result fsInit(void)
        return ret;
 }
 
+Result fsInitDefault(void)
+{
+       return fsInitFromService("fs:USER");
+}
+
 void fsExit(void)
 {
        if (AtomicDecrement(&fsuRefCount)) return;
index d9c43014ebb512a0f054a6fc6449cb528bf86a24..52c9104148b3149f224b5c65b768a3f4099989aa 100644 (file)
@@ -12,6 +12,6 @@ void __attribute__((weak)) __appInit(void) {
        aptInit();
        hidInit();
 
-       fsInit();
+       fsInitDefault();
        sdmcInit();
 }