in src/environment.h [27:74]
static std::pair<std::string, std::string> get_env_variable_no_log(
std::string env_variable)
{
const char* env_value;
std::stringstream error_message_stream;
#ifdef __LINUX__
env_value = getenv(env_variable.c_str());
if (env_value == NULL)
{
error_message_stream << "Could not retrieve environment variable for '"
<< env_variable << "'";
return std::make_pair(std::string(), error_message_stream.str());
}
#else
std::unique_ptr<char[]> env_temp =
std::make_unique<char[]>(MAX_ENV_VAR_LENGTH);
if (env_temp == nullptr)
{
error_message_stream
<< "Failed to allocate memory for environment varible for '"
<< env_variable << "'";
return std::make_pair(std::string(), error_message_stream.str());
}
env_value = env_temp.get();
DWORD status = GetEnvironmentVariableA(
env_variable.c_str(), env_temp.get(), MAX_ENV_VAR_LENGTH);
if (status == 0)
{
error_message_stream << "Could not retrieve environment variable for '"
<< env_variable << "'";
return std::make_pair(std::string(), error_message_stream.str());
}
#endif
auto length = strnlen(env_value, MAX_ENV_VAR_LENGTH);
if (length <= 0 || length == MAX_ENV_VAR_LENGTH)
{
error_message_stream << "Length of environment variable '"
<< env_variable << "' ";
error_message_stream << "is either empty or equal to expected max "
"length. ";
error_message_stream << "Actual length is: " << length << " ";
error_message_stream << "Max length is " << MAX_ENV_VAR_LENGTH;
return std::make_pair(std::string(), error_message_stream.str());
}
return std::make_pair(env_value, std::string());
}