KWSys 2016-08-01 (560bcdbb)
Code extracted from: http://public.kitware.com/KWSys.git at commit 560bcdbb972cbf4c7ea77010363c652b697b9933 (master). Upstream Shortlog ----------------- Brad King (1): 560bcdbb SystemTools: Factor out common `const char* GetEnv()` private implementation James Johnston (1): 1c147abb Directory: Use Windows API wherever possible and port to Embarcadero
This commit is contained in:
parent
9ef2b2b164
commit
6bc3073e23
|
@ -84,9 +84,9 @@ void Directory::Clear()
|
|||
|
||||
} // namespace KWSYS_NAMESPACE
|
||||
|
||||
// First microsoft compilers
|
||||
// First Windows platforms
|
||||
|
||||
#if defined(_MSC_VER) || defined(__WATCOMC__)
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
#include <windows.h>
|
||||
#include <io.h>
|
||||
#include <ctype.h>
|
||||
|
@ -97,15 +97,25 @@ void Directory::Clear()
|
|||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
// Wide function names can vary depending on compiler:
|
||||
#ifdef __BORLANDC__
|
||||
# define _wfindfirst_func __wfindfirst
|
||||
# define _wfindnext_func __wfindnext
|
||||
#else
|
||||
# define _wfindfirst_func _wfindfirst
|
||||
# define _wfindnext_func _wfindnext
|
||||
#endif
|
||||
|
||||
namespace KWSYS_NAMESPACE
|
||||
{
|
||||
|
||||
bool Directory::Load(const std::string& name)
|
||||
{
|
||||
this->Clear();
|
||||
#if _MSC_VER < 1300
|
||||
#if (defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__)
|
||||
// Older Visual C++ and Embarcadero compilers.
|
||||
long srchHandle;
|
||||
#else
|
||||
#else // Newer Visual C++
|
||||
intptr_t srchHandle;
|
||||
#endif
|
||||
char* buf;
|
||||
|
@ -132,7 +142,7 @@ bool Directory::Load(const std::string& name)
|
|||
struct _wfinddata_t data; // data of current file
|
||||
|
||||
// Now put them into the file array
|
||||
srchHandle = _wfindfirst((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
|
||||
srchHandle = _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
|
||||
delete [] buf;
|
||||
|
||||
if ( srchHandle == -1 )
|
||||
|
@ -145,16 +155,17 @@ bool Directory::Load(const std::string& name)
|
|||
{
|
||||
this->Internal->Files.push_back(Encoding::ToNarrow(data.name));
|
||||
}
|
||||
while ( _wfindnext(srchHandle, &data) != -1 );
|
||||
while ( _wfindnext_func(srchHandle, &data) != -1 );
|
||||
this->Internal->Path = name;
|
||||
return _findclose(srchHandle) != -1;
|
||||
}
|
||||
|
||||
unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
|
||||
{
|
||||
#if _MSC_VER < 1300
|
||||
#if (defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__)
|
||||
// Older Visual C++ and Embarcadero compilers.
|
||||
long srchHandle;
|
||||
#else
|
||||
#else // Newer Visual C++
|
||||
intptr_t srchHandle;
|
||||
#endif
|
||||
char* buf;
|
||||
|
@ -172,7 +183,7 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
|
|||
struct _wfinddata_t data; // data of current file
|
||||
|
||||
// Now put them into the file array
|
||||
srchHandle = _wfindfirst((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
|
||||
srchHandle = _wfindfirst_func((wchar_t*)Encoding::ToWide(buf).c_str(), &data);
|
||||
delete [] buf;
|
||||
|
||||
if ( srchHandle == -1 )
|
||||
|
@ -186,7 +197,7 @@ unsigned long Directory::GetNumberOfFilesInDirectory(const std::string& name)
|
|||
{
|
||||
count++;
|
||||
}
|
||||
while ( _wfindnext(srchHandle, &data) != -1 );
|
||||
while ( _wfindnext_func(srchHandle, &data) != -1 );
|
||||
_findclose(srchHandle);
|
||||
return count;
|
||||
}
|
||||
|
|
|
@ -523,7 +523,7 @@ void SystemTools::GetPath(std::vector<std::string>& path, const char* env)
|
|||
}
|
||||
}
|
||||
|
||||
const char* SystemTools::GetEnv(const char* key)
|
||||
const char* SystemTools::GetEnvImpl(const char* key)
|
||||
{
|
||||
const char *v = 0;
|
||||
#if defined(_WIN32)
|
||||
|
@ -540,9 +540,14 @@ const char* SystemTools::GetEnv(const char* key)
|
|||
return v;
|
||||
}
|
||||
|
||||
const char* SystemTools::GetEnv(const char* key)
|
||||
{
|
||||
return SystemTools::GetEnvImpl(key);
|
||||
}
|
||||
|
||||
const char* SystemTools::GetEnv(const std::string& key)
|
||||
{
|
||||
return SystemTools::GetEnv(key.c_str());
|
||||
return SystemTools::GetEnvImpl(key.c_str());
|
||||
}
|
||||
|
||||
bool SystemTools::GetEnv(const char* key, std::string& result)
|
||||
|
|
|
@ -984,6 +984,7 @@ private:
|
|||
std::vector<std::string>(),
|
||||
bool no_system_path = false);
|
||||
|
||||
static const char* GetEnvImpl(const char* key);
|
||||
|
||||
/**
|
||||
* Path translation table from dir to refdir
|
||||
|
|
Loading…
Reference in New Issue