From 5472514f4bfdca2831070de3c6d3b6cc8070b1a0 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 1 Dec 2023 20:59:21 +0100 Subject: [PATCH] Core: Add EnvironmentVariables --- include/Nazara/Core/EnvironmentVariables.hpp | 21 +++++++++++ include/Nazara/Core/EnvironmentVariables.inl | 11 ++++++ src/Nazara/Core/EnvironmentVariables.cpp | 39 ++++++++++++++++++++ src/Nazara/Core/PluginLoader.cpp | 3 +- 4 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 include/Nazara/Core/EnvironmentVariables.hpp create mode 100644 include/Nazara/Core/EnvironmentVariables.inl create mode 100644 src/Nazara/Core/EnvironmentVariables.cpp diff --git a/include/Nazara/Core/EnvironmentVariables.hpp b/include/Nazara/Core/EnvironmentVariables.hpp new file mode 100644 index 000000000..c5e189dae --- /dev/null +++ b/include/Nazara/Core/EnvironmentVariables.hpp @@ -0,0 +1,21 @@ +// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_CORE_ENVIRONMENTVARIABLES_HPP +#define NAZARA_CORE_ENVIRONMENTVARIABLES_HPP + +#include +#include + +namespace Nz +{ + NAZARA_CORE_API const char* GetEnvironmentVariable(const char* envVar); + NAZARA_CORE_API bool TestEnvironmentVariable(const char* envVar); +} + +#include + +#endif // NAZARA_CORE_ENVIRONMENTVARIABLES_HPP diff --git a/include/Nazara/Core/EnvironmentVariables.inl b/include/Nazara/Core/EnvironmentVariables.inl new file mode 100644 index 000000000..3846a912d --- /dev/null +++ b/include/Nazara/Core/EnvironmentVariables.inl @@ -0,0 +1,11 @@ +// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include + +namespace Nz +{ +} + +#include diff --git a/src/Nazara/Core/EnvironmentVariables.cpp b/src/Nazara/Core/EnvironmentVariables.cpp new file mode 100644 index 000000000..b328aad4b --- /dev/null +++ b/src/Nazara/Core/EnvironmentVariables.cpp @@ -0,0 +1,39 @@ +// Copyright (C) 2023 Jérôme "Lynix" Leclercq (lynix680@gmail.com) +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include + +namespace Nz +{ + const char* GetEnvironmentVariable(const char* envVar) + { + return std::getenv(envVar); + } + + bool TestEnvironmentVariable(const char* envVar) + { + const char* value = GetEnvironmentVariable(envVar); + if (!value) + return false; + + // Environment variable exists, recognize some values as disabling it + using namespace std::string_view_literals; + constexpr std::array disabledValues = { + "0"sv, + "n"sv, + "false"sv, + }; + + for (std::string_view disabledValue : disabledValues) + { + if (value == disabledValue) + return false; + } + + return true; + } +} diff --git a/src/Nazara/Core/PluginLoader.cpp b/src/Nazara/Core/PluginLoader.cpp index 7bc0b5e01..a56b501ce 100644 --- a/src/Nazara/Core/PluginLoader.cpp +++ b/src/Nazara/Core/PluginLoader.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -15,7 +16,7 @@ namespace Nz { AddSearchDirectory("."); AddSearchDirectory("plugins"); - if (const char* path = getenv("NAZARA_PLUGIN_DIR")) + if (const char* path = GetEnvironmentVariable("NAZARA_PLUGIN_DIR")) AddSearchDirectory(Utf8Path(path)); }