Add shared utility for command line arguments merging
This commit is contained in:
@@ -3,24 +3,11 @@
|
|||||||
#if PLATFORM_LINUX || PLATFORM_MAC || PLATFORM_IOS
|
#if PLATFORM_LINUX || PLATFORM_MAC || PLATFORM_IOS
|
||||||
|
|
||||||
#include "Engine/Engine/Engine.h"
|
#include "Engine/Engine/Engine.h"
|
||||||
#include "Engine/Core/Types/StringBuilder.h"
|
#include "Engine/Main/MainUtil.h"
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
// Join the arguments
|
return Engine::Main(GetCommandLine(argc, argv));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#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