Files
UnrealEngine/Engine/Source/Developer/Windows/LiveCoding/Private/External/LC_Environment.cpp
2025-05-18 13:04:45 +08:00

69 lines
1.4 KiB
C++

// Copyright 2011-2020 Molecular Matters GmbH, all rights reserved.
#if LC_VERSION == 1
// BEGIN EPIC MOD
//#include PCH_INCLUDE
// END EPIC MOD
#include "LC_Environment.h"
// BEGIN EPIC MOD
#include "LC_Logging.h"
#include "Windows/WindowsHWrapper.h"
// END EPIC MOD
namespace
{
// BEGIN EPIC MOD
static const DWORD MAX_ENVIRONMENT_VARIABLE_SIZE = 1024u;
// END EPIC MOD
}
void environment::RemoveVariable(const wchar_t* variable)
{
const BOOL result = ::SetEnvironmentVariableW(variable, NULL);
if (result == 0)
{
LC_LOG_DEV("Could not remove environment variable %S (Error: %d)", variable, ::GetLastError());
}
}
void environment::SetVariable(const wchar_t* variable, const wchar_t* value)
{
const BOOL result = ::SetEnvironmentVariableW(variable, value);
if (result == 0)
{
LC_LOG_DEV("Could not set environment variable %S to value %S (Error: %d)", variable, value, ::GetLastError());
}
}
std::wstring environment::GetVariable(const wchar_t* variable, const wchar_t* defaultValue)
{
std::wstring value;
// BEGIN EPIC MOD
value.resize(MAX_ENVIRONMENT_VARIABLE_SIZE);
// END EPIC MOD
// BEGIN EPIC MOD
const DWORD result = ::GetEnvironmentVariableW(variable, &value[0], MAX_ENVIRONMENT_VARIABLE_SIZE);
// END EPIC _MOD
if (result == 0)
{
// if a default value was provided, return that instead
if (defaultValue)
{
return std::wstring(defaultValue);
}
else
{
return std::wstring();
}
}
return value;
}
#endif // LC_VERSION