From 5342f7248ae340f4bead0e26d21e707c66cecb89 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Thu, 19 Apr 2018 07:12:05 -0600 Subject: [PATCH] Stratosphere: Assume fsldr code is provided by libnx --- stratosphere/loader/source/lib/fsldr.c | 147 ------------------------- stratosphere/loader/source/lib/fsldr.h | 17 --- 2 files changed, 164 deletions(-) delete mode 100644 stratosphere/loader/source/lib/fsldr.c delete mode 100644 stratosphere/loader/source/lib/fsldr.h diff --git a/stratosphere/loader/source/lib/fsldr.c b/stratosphere/loader/source/lib/fsldr.c deleted file mode 100644 index 18b3ae435..000000000 --- a/stratosphere/loader/source/lib/fsldr.c +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2018 SciresM -#include -#include -#include -#include -#include -#include -#include -#include -#include "fsldr.h" - -static Service g_fsldrSrv; -static u64 g_fsldrRefCnt; - -Result fsldrSetCurrentProcess(); - -Result fsldrInitialize(void) { - atomicIncrement64(&g_refCnt); - - if (serviceIsActive(&g_fsldrSrv)) - return 0; - - Result rc = smGetService(&g_fsldrSrv, "fsp-ldr"); - - if (R_SUCCEEDED(rc) && kernelAbove400()) { - rc = fsldrSetCurrentProcess(); - } - - return rc; - -} - -void fsldrExit(void) { - if (atomicDecrement64(&g_fsldrRefCnt) == 0) - serviceClose(&g_fsldrSrv); -} - -Result fsldrOpenCodeFileSystem(u64 tid, const char *path, FsFileSystem* out) { - char send_path[FS_MAX_PATH] = {0}; - IpcCommand c; - ipcInitialize(&c); - ipcAddSendStatic(&c, send_path, FS_MAX_PATH, 0); - - struct { - u64 magic; - u64 cmd_id; - u64 tid; - } *raw; - - raw = ipcPrepareHeader(&c, sizeof(*raw)); - raw->magic = SFCI_MAGIC; - raw->cmd_id = 0; - raw->tid = tid; - - strncpy(send_path, path, FS_MAX_PATH); - Result rc = serviceIpcDispatch(&g_fsldrSrv); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse(&r); - - struct { - u64 magic; - u64 result; - } *resp = r.Raw; - - rc = resp->result; - - if (R_SUCCEEDED(rc)) { - serviceCreate(&out->s, r.Handles[0]); - } - } - - return rc; -} - -Result fsldrIsArchivedProgram(u64 pid, bool *out) { - IpcCommand c; - ipcInitialize(&c); - - struct { - u64 magic; - u64 cmd_id; - u64 pid; - } *raw; - - raw = ipcPrepareHeader(&c, sizeof(*raw)); - raw->magic = SFCI_MAGIC; - raw->cmd_id = 1; - raw->pid = pid; - - Result rc = serviceIpcDispatch(&g_fsldrSrv); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse(&r); - - struct { - u64 magic; - u64 result; - u8 is_archived; - } *resp = r.Raw; - - rc = resp->result; - - if (R_SUCCEEDED(rc)) { - *out = is_archived != 0; - } - } - - return rc; -} - -Result fsldrSetCurrentProcess() { - IpcCommand c; - ipcInitialize(&c); - ipcSendPid(&c); - - struct { - u64 magic; - u64 cmd_id; - u64 unk; - } *raw; - - raw = ipcPrepareHeader(&c, sizeof(*raw)); - - raw->magic = SFCI_MAGIC; - raw->cmd_id = 2; - raw->unk = 0; - - rc = serviceIpcDispatch(&g_fsldrSrv); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse(&r); - - struct { - u64 magic; - u64 result; - } *resp = r.Raw; - - rc = resp->result; - } - - return rc; -} - diff --git a/stratosphere/loader/source/lib/fsldr.h b/stratosphere/loader/source/lib/fsldr.h deleted file mode 100644 index ab937e4b2..000000000 --- a/stratosphere/loader/source/lib/fsldr.h +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @file fsldr.h - * @brief FilesystemProxy-ForLoader (fsp-ldr) service IPC wrapper. - * @author SciresM - * @copyright libnx Authors - */ -#pragma once -#include -#include -#include - -Result fsldrInitialize(void); -void fsldrExit(void); - -Result fsldrOpenCodeFileSystem(u64 tid, const char *path, FsFileSystem* out); -Result fsldrIsArchivedProgram(u64 pid, bool *out); -Result fsldrSetCurrentProcess(); \ No newline at end of file