Add shared utility for command line arguments merging

This commit is contained in:
Wojtek Figat
2025-07-24 12:38:52 +02:00
parent 69585618ed
commit acc1777638
2 changed files with 39 additions and 15 deletions

View File

@@ -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

View 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;
}