Add shared utility for command line arguments merging
This commit is contained in:
@@ -3,24 +3,11 @@
|
||||
#if PLATFORM_LINUX || PLATFORM_MAC || PLATFORM_IOS
|
||||
|
||||
#include "Engine/Engine/Engine.h"
|
||||
#include "Engine/Core/Types/StringBuilder.h"
|
||||
#include "Engine/Main/MainUtil.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
// Join the arguments
|
||||
StringBuilder args;
|
||||
for (int i = 1; i < argc; i++)
|
||||
{
|
||||
String arg;
|
||||
arg.SetUTF8(argv[i], StringUtils::Length(argv[i]));
|
||||
args.Append(arg);
|
||||
|
||||
if (i + 1 != argc)
|
||||
args.Append(TEXT(' '));
|
||||
}
|
||||
args.Append(TEXT('\0'));
|
||||
|
||||
return Engine::Main(*args);
|
||||
return Engine::Main(GetCommandLine(argc, argv));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
37
Source/Engine/Main/MainUtil.h
Normal file
37
Source/Engine/Main/MainUtil.h
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright (c) Wojciech Figat. All rights reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Engine/Platform/StringUtils.h"
|
||||
|
||||
const Char* GetCommandLine(int argc, char* argv[])
|
||||
{
|
||||
int32 length = 0;
|
||||
for (int i = 1; argc > 1 && i < argc; i++)
|
||||
{
|
||||
length += StringUtils::Length((const char*)argv[i]);
|
||||
if (i + 1 != argc)
|
||||
length++;
|
||||
}
|
||||
const Char* cmdLine;
|
||||
if (length != 0)
|
||||
{
|
||||
Char* str = (Char*)malloc(length * sizeof(Char));
|
||||
cmdLine = str;
|
||||
for (int i = 1; i < argc; i++)
|
||||
{
|
||||
length = StringUtils::Length((const char*)argv[i]);
|
||||
int32 strLen = 0;
|
||||
StringUtils::ConvertANSI2UTF16(argv[i], str, length, strLen);
|
||||
str += strLen;
|
||||
if (i + 1 != argc)
|
||||
*str++ = TEXT(' ');
|
||||
}
|
||||
*str = TEXT('\0');
|
||||
}
|
||||
else
|
||||
{
|
||||
cmdLine = TEXT("");
|
||||
}
|
||||
return cmdLine;
|
||||
}
|
||||
Reference in New Issue
Block a user