From 68dbb72b04abb561e8bf7e4e5d370f6847f2f6a5 Mon Sep 17 00:00:00 2001 From: yellows8 Date: Sat, 14 Oct 2017 21:45:59 -0400 Subject: [PATCH] Added fsExit and fsGetServiceSession. Check whether initialization was already done in fsInitialize, etc. Added fs to __appInit/__appExit. --- nx/include/switch/services/fs.h | 4 ++++ nx/source/services/fs.c | 13 ++++++++++++- nx/source/system/init.c | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/nx/include/switch/services/fs.h b/nx/include/switch/services/fs.h index ba0b26c6..228e10ab 100644 --- a/nx/include/switch/services/fs.h +++ b/nx/include/switch/services/fs.h @@ -26,6 +26,10 @@ typedef enum { #define FS_MAX_PATH 0x301 Result fsInitialize(); +void fsExit(void); + +Handle fsGetServiceSession(void); + Result fsMountSdcard(FsFileSystem* out); // todo: Rest of commands here diff --git a/nx/source/services/fs.c b/nx/source/services/fs.c index dd3c22d6..8a84ceaa 100644 --- a/nx/source/services/fs.c +++ b/nx/source/services/fs.c @@ -1,9 +1,10 @@ // Copyright 2017 plutoo #include -static Handle g_fsHandle = -1; +static Handle g_fsHandle = INVALID_HANDLE; Result fsInitialize() { + if(g_fsHandle != INVALID_HANDLE)return 0; Result rc = smGetService(&g_fsHandle, "fsp-srv"); if (R_SUCCEEDED(rc)) { @@ -41,6 +42,16 @@ Result fsInitialize() { return rc; } +void fsExit(void) { + if(g_fsHandle == INVALID_HANDLE)return; + svcCloseHandle(g_fsHandle); + g_fsHandle = INVALID_HANDLE; +} + +Handle fsGetServiceSession(void) { + return g_fsHandle; +} + Result fsMountSdcard(FsFileSystem* out) { IpcCommand c; ipcInitialize(&c); diff --git a/nx/source/system/init.c b/nx/source/system/init.c index d1f15534..12b8fbb4 100644 --- a/nx/source/system/init.c +++ b/nx/source/system/init.c @@ -31,11 +31,13 @@ void __attribute__((weak)) __appInit(void) { // Initialize default services. smInitialize(); + fsInitialize(); } void __attribute__((weak)) __appExit(void) { // Cleanup default services. + fsExit(); smExit(); }