/// 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);
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);
return ret;
}
+Result fsInitDefault(void)
+{
+ return fsInitFromService("fs:USER");
+}
+
void fsExit(void)
{
if (AtomicDecrement(&fsuRefCount)) return;