Skip to content

Commit 8560ed2

Browse files
author
Roberto De Ioris
committed
added meaningful sys.argv
1 parent c6e064b commit 8560ed2

1 file changed

Lines changed: 36 additions & 11 deletions

File tree

‎Source/UnrealEnginePython/Private/UnrealEnginePython.cpp‎

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,38 @@ bool PyUnicodeOrString_Check(PyObject *py_obj)
8080

8181
void FUnrealEnginePythonModule::UESetupPythonInterpreter(bool verbose)
8282
{
83+
const TCHAR* CommandLine = FCommandLine::GetOriginal();
84+
const SIZE_T CommandLineSize = FCString::Strlen(CommandLine) + 1;
85+
TCHAR* CommandLineCopy = new TCHAR[CommandLineSize];
86+
FCString::Strcpy(CommandLineCopy, CommandLineSize, CommandLine);
87+
const TCHAR* ParsedCmdLine = CommandLineCopy;
8388

89+
TArray<FString> Args;
90+
for (;;)
91+
{
92+
FString Arg = FParse::Token(ParsedCmdLine, 0);
93+
if (Arg.Len() <= 0)
94+
break;
95+
Args.Add(Arg);
96+
}
97+
98+
#if PY_MAJOR_VERSION >= 3
99+
wchar_t **argv = (wchar_t **)FMemory::Malloc(sizeof(wchar_t *) * (Args.Num() + 1));
100+
#else
101+
char **argv = (char **)FMemory::Malloc(sizeof(char *) * (Args.Num() + 1));
102+
#endif
103+
argv[Args.Num()] = nullptr;
104+
105+
for (int32 i = 0; i < Args.Num(); i++)
106+
{
84107
#if PY_MAJOR_VERSION >= 3
85-
wchar_t *argv[] = { UTF8_TO_TCHAR("UnrealEngine"), NULL };
108+
argv[i] = (wchar_t *)(*Args[i]);
86109
#else
87-
char *argv[] = { (char *)"UnrealEngine", NULL };
110+
argv[i] = TCHAR_TO_UTF8(*Args[i]);
88111
#endif
89-
PySys_SetArgv(1, argv);
112+
}
113+
114+
PySys_SetArgv(Args.Num(), argv);
90115

91116
unreal_engine_init_py_module();
92117

@@ -387,11 +412,11 @@ void FUnrealEnginePythonModule::StartupModule()
387412
#else
388413
unreal_engine_py_log_error();
389414
#endif
390-
}
415+
}
391416

392417
// release the GIL
393418
PyThreadState *UEPyGlobalState = PyEval_SaveThread();
394-
}
419+
}
395420

396421
void FUnrealEnginePythonModule::ShutdownModule()
397422
{
@@ -422,16 +447,16 @@ void FUnrealEnginePythonModule::RunString(char *str)
422447
#if PLATFORM_MAC
423448
void FUnrealEnginePythonModule::RunStringInMainThread(char *str)
424449
{
425-
MainThreadCall(^{
426-
RunString(str);
427-
});
450+
MainThreadCall(^{
451+
RunString(str);
452+
});
428453
}
429454

430455
void FUnrealEnginePythonModule::RunFileInMainThread(char *filename)
431456
{
432-
MainThreadCall(^{
433-
RunFile(filename);
434-
});
457+
MainThreadCall(^{
458+
RunFile(filename);
459+
});
435460
}
436461
#endif
437462

0 commit comments

Comments
 (0)