diff options
author | KWSys Upstream <kwrobot@kitware.com> | 2016-08-01 19:20:05 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-08-02 13:21:31 (GMT) |
commit | 6bc3073e23af70bde3e8a7659aa51a784deeec9c (patch) | |
tree | fb5ecfbd29e9e5e124cff043d47009ec5ec55007 /Directory.cxx | |
parent | 9ef2b2b164a92081bf3466af9ac0d0c28acae79d (diff) | |
download | CMake-6bc3073e23af70bde3e8a7659aa51a784deeec9c.zip CMake-6bc3073e23af70bde3e8a7659aa51a784deeec9c.tar.gz CMake-6bc3073e23af70bde3e8a7659aa51a784deeec9c.tar.bz2 |
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
Diffstat (limited to 'Directory.cxx')
-rw-r--r-- | Directory.cxx | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/Directory.cxx b/Directory.cxx index c549792..15480e1 100644 --- a/Directory.cxx +++ b/Directory.cxx @@ -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; } |