mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
Implement NextLoadPath for loader env
This commit is contained in:
parent
af0e9eea7d
commit
97141448e9
@ -18,7 +18,8 @@
|
||||
#define MAKERESULT(module,description) \
|
||||
((((module)&0x1FF)) | ((description)&0x1FFF)<<9)
|
||||
|
||||
#define MODULE_LIBNX 345
|
||||
#define MODULE_LIBNX 345
|
||||
|
||||
enum {
|
||||
LIBNX_BADRELOC=1,
|
||||
LIBNX_OUTOFMEM,
|
||||
|
@ -45,3 +45,5 @@ bool envIsSyscallHinted(u8 svc);
|
||||
Handle envGetOwnProcessHandle(void);
|
||||
|
||||
LoaderReturnFn envGetExitFuncPtr(void);
|
||||
|
||||
Result envSetNextLoad(const char* path, const char* argv);
|
||||
|
@ -10,6 +10,8 @@ static u64 g_overrideArgc = 0;
|
||||
static void* g_overrideArgv = NULL;
|
||||
static u64 g_syscallHints[2];
|
||||
static Handle g_processHandle = INVALID_HANDLE;
|
||||
static char* g_nextLoadPath = NULL;
|
||||
static char* g_nextLoadArgv = NULL;
|
||||
|
||||
extern __attribute__((weak)) u32 __nx_applet_type;
|
||||
|
||||
@ -48,7 +50,8 @@ void envParse(void* ctx, Handle main_thread, LoaderReturnFn saved_lr)
|
||||
break;
|
||||
|
||||
case EntryType_NextLoadPath:
|
||||
// TODO
|
||||
g_nextLoadPath = (char*) ent->Value[0];
|
||||
g_nextLoadArgv = (char*) ent->Value[1];
|
||||
break;
|
||||
|
||||
case EntryType_OverrideHeap:
|
||||
@ -140,3 +143,21 @@ Handle envGetOwnProcessHandle(void) {
|
||||
LoaderReturnFn envGetExitFuncPtr(void) {
|
||||
return g_loaderRetAddr;
|
||||
}
|
||||
|
||||
Result envSetNextLoad(const char* path, const char* argv)
|
||||
{
|
||||
if (g_nextLoadPath == NULL)
|
||||
return MAKERESULT(MODULE_LIBNX, LIBNX_NOTINITIALIZED);
|
||||
|
||||
strcpy(g_nextLoadPath, path);
|
||||
|
||||
if (g_nextLoadArgv != NULL)
|
||||
{
|
||||
if (argv == NULL)
|
||||
g_nextLoadArgv[0] = '\0';
|
||||
else
|
||||
strcpy(g_nextLoadArgv, argv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user