ff_i_envvar

System environment variable functions.

Read and normalise process environment variables.

string GetEnvironmentVariableAsBool(string sVarName, string sDefault = "F")
Parameters:
  • sVarName – Name of the environment variable to read.

  • sDefault – Value returned when the variable is absent or unrecognised. Defaults to “F”.

Return “T”, “F” depending on value of env var.

Source code

// @code

#include "ff_i_string"

#include "nwnx_util"


// -----------------------------------------------------------------------------
// Private functions from ff_i_console to print the warning
int _envvar_IsATTY()
{
  return NWNX_Util_GetTTY() == "" ? FALSE : TRUE;
}

string _envvar_GetConsoleColorString(string sString)
{
  if (!_envvar_IsATTY())
    return sString;

  string CONSOLE_COLOR_YELLOW = "[01;33m";
  string CONSOLE_COLOR_NONE   = "[00m";
  return   GetASCIIEscape() + CONSOLE_COLOR_YELLOW
         + sString
         + GetASCIIEscape() + CONSOLE_COLOR_NONE;
}

void _envvar_LogWarning(string sMessage)
{
  sMessage = _envvar_GetConsoleColorString(sMessage);
  WriteTimestampedLogEntry(sMessage);
}

//! @brief Return "T", "F" depending on value of env var.
//! @param sVarName Name of the environment variable to read.
//! @param sDefault Value returned when the variable is absent or unrecognised. Defaults to "F".
string GetEnvironmentVariableAsBool(string sVarName, string sDefault = "F");
string GetEnvironmentVariableAsBool(string sVarName, string sDefault = "F")
{
  string sValue = NWNX_Util_GetEnvironmentVariable(sVarName);
  if (sValue == "")
    return sDefault;

  sValue = GetStringUpperCase(sValue);
  if (sValue == "Y" || sValue == "YES" || sValue == "TRUE" || sValue == "T")
    return "T";
  if (sValue == "N" || sValue == "NO" || sValue == "FALSE" || sValue == "F")
    return "F";

  // We can't include ff_i_console because of circular dependency
  if (sValue != "")
    _envvar_LogWarning("warning: The environment variable '" + sVarName + "' has a non standard value (T,F, or unset)");
  return sDefault;
}