From 6d4c00ab627ccdc6181c34e8b82cbddfe8245e3a Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Sat, 8 Jul 2023 04:24:36 +0500 Subject: [PATCH] Implement Environment::list method for Linux. --- source/base/environment.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/base/environment.cc b/source/base/environment.cc index 911da28869..ee12bf0a6a 100644 --- a/source/base/environment.cc +++ b/source/base/environment.cc @@ -22,6 +22,7 @@ #include "base/strings/unicode.h" #include "build/build_config.h" +#include #include #include @@ -31,6 +32,10 @@ #include #endif +#if defined(OS_LINUX) +extern char** environ; +#endif + namespace base { namespace { @@ -164,7 +169,18 @@ std::vector> Environment::list() FreeEnvironmentStringsW(strings); return result; - +#elif defined(OS_LINUX) + for (char** current = environ; *current; current++) + { + char* name = strtok(*current, "="); + if (name) + { + char* value = strtok(nullptr, "="); + if (value) + result.emplace_back(name, value); + } + } + return result; #else return result; #endif