From 09b90d4377d3bf199114ae9aa65fe30161c2467d Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Sun, 19 Nov 2023 11:40:49 -0500 Subject: KWSys 2023-11-19 (8ce4c90d) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 8ce4c90d748f50c7f061436fcefe07b056d23469 (master). Upstream Shortlog ----------------- Ben Boeckel (1): 72e677e9 kwsysPrivate.h: Remove unused build-tree copy Clemens Wasser (1): dd7d92d6 SystemTools: Implement GetEnv via GetEnvironmentVariableW on Win32 scivision (1): 7f4459d5 Comeau: Remove undocumented support for this compiler --- CMakeLists.txt | 8 -------- SystemTools.cxx | 26 +++++++++----------------- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b7f2cc..562d5e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,14 +298,6 @@ endif() set(KWSYS_HEADER_INSTALL_DIR) set(KWSYS_LIBRARY_INSTALL_DIR) -# Generated source files will need this header. -string(COMPARE EQUAL "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" - KWSYS_IN_SOURCE_BUILD) -if(NOT KWSYS_IN_SOURCE_BUILD) - configure_file(${PROJECT_SOURCE_DIR}/kwsysPrivate.h - ${PROJECT_BINARY_DIR}/kwsysPrivate.h COPYONLY IMMEDIATE) -endif() - # Select plugin module file name convention. if(NOT KWSYS_DynamicLoader_PREFIX) set(KWSYS_DynamicLoader_PREFIX ${CMAKE_SHARED_MODULE_PREFIX}) diff --git a/SystemTools.cxx b/SystemTools.cxx index 3bb7869..cefb922 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -412,18 +412,6 @@ inline void Realpath(const std::string& path, std::string& resolved_path, } #endif -#if !defined(_WIN32) && defined(__COMO__) -// Hack for como strict mode to avoid defining _SVID_SOURCE or _BSD_SOURCE. -extern "C" { -extern FILE* popen(__const char* __command, __const char* __modes) __THROW; -extern int pclose(FILE* __stream) __THROW; -extern char* realpath(__const char* __restrict __name, - char* __restrict __resolved) __THROW; -extern char* strdup(__const char* __s) __THROW; -extern int putenv(char* __string) __THROW; -} -#endif - namespace KWSYS_NAMESPACE { double SystemTools::GetTime() @@ -777,12 +765,16 @@ const char* SystemTools::GetEnv(const std::string& key) bool SystemTools::GetEnv(const char* key, std::string& result) { #if defined(_WIN32) - const std::wstring wkey = Encoding::ToWide(key); - const wchar_t* wv = _wgetenv(wkey.c_str()); - if (wv) { - result = Encoding::ToNarrow(wv); - return true; + auto wide_key = Encoding::ToWide(key); + auto result_size = GetEnvironmentVariableW(wide_key.data(), nullptr, 0); + if (result_size <= 0) { + return false; } + std::wstring wide_result; + wide_result.resize(result_size - 1); + GetEnvironmentVariableW(wide_key.data(), &wide_result[0], result_size); + result = Encoding::ToNarrow(wide_result); + return true; #else const char* v = getenv(key); if (v) { -- cgit v0.12