Browse Source

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
KWSys Upstream 2 years ago
parent
commit
09b90d4377
2 changed files with 9 additions and 25 deletions
  1. 0 8
      CMakeLists.txt
  2. 9 17
      SystemTools.cxx

+ 0 - 8
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})

+ 9 - 17
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) {