Commit 4ef36a00 authored by Lemures Lemniscati's avatar Lemures Lemniscati Committed by Brad King
Browse files

SystemTools: Remove Cygwin-specific file lookup optimization

Based on downstream patch from Cygwin package for CMake by Marco Atzeri:

* https://github.com/matzeri/cygwin-pkg/blob/64864eb8f0d635ea44226e4b9a41a7ca59a1c7dd/cmake/3.17.3-cygwin-paths.patch
parent 63dbb0ca
......@@ -96,19 +96,12 @@
# if defined(_MSC_VER) && _MSC_VER >= 1800
# define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
# endif
#elif defined(__CYGWIN__)
# include <windows.h>
# undef _WIN32
#endif
#if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
extern char** environ;
#endif
#ifdef __CYGWIN__
# include <sys/cygwin.h>
#endif
// getpwnam doesn't exist on Windows and Cray Xt3/Catamount
// same for TIOCGWINSZ
#if defined(_WIN32) || defined(__LIBCATAMOUNT__) || \
......@@ -1290,15 +1283,7 @@ bool SystemTools::PathExists(const std::string& path)
if (path.empty()) {
return false;
}
#if defined(__CYGWIN__)
// Convert path to native windows path if possible.
char winpath[MAX_PATH];
if (SystemTools::PathCygwinToWin32(path.c_str(), winpath)) {
return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
}
struct stat st;
return lstat(path.c_str(), &st) == 0;
#elif defined(_WIN32)
#if defined(_WIN32)
return (GetFileAttributesW(Encoding::ToWindowsExtendedPath(path).c_str()) !=
INVALID_FILE_ATTRIBUTES);
#else
......@@ -1320,14 +1305,7 @@ bool SystemTools::FileExists(const std::string& filename)
if (filename.empty()) {
return false;
}
#if defined(__CYGWIN__)
// Convert filename to native windows path if possible.
char winpath[MAX_PATH];
if (SystemTools::PathCygwinToWin32(filename.c_str(), winpath)) {
return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
}
return access(filename.c_str(), R_OK) == 0;
#elif defined(_WIN32)
#if defined(_WIN32)
DWORD attr =
GetFileAttributesW(Encoding::ToWindowsExtendedPath(filename).c_str());
if (attr == INVALID_FILE_ATTRIBUTES) {
......@@ -1433,24 +1411,6 @@ int SystemTools::Stat(const std::string& path, SystemTools::Stat_t* buf)
#endif
}
#ifdef __CYGWIN__
bool SystemTools::PathCygwinToWin32(const char* path, char* win32_path)
{
auto itr = SystemToolsStatics->Cyg2Win32Map.find(path);
if (itr != SystemToolsStatics->Cyg2Win32Map.end()) {
strncpy(win32_path, itr->second.c_str(), MAX_PATH);
} else {
if (cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) !=
0) {
win32_path[0] = 0;
}
SystemToolsStatics->Cyg2Win32Map.insert(
SystemToolsStatic::StringMap::value_type(path, win32_path));
}
return win32_path[0] != 0;
}
#endif
bool SystemTools::Touch(const std::string& filename, bool create)
{
if (!SystemTools::FileExists(filename)) {
......
......@@ -331,15 +331,6 @@ public:
static int Stat(const char* path, Stat_t* buf);
static int Stat(const std::string& path, Stat_t* buf);
/**
* Converts Cygwin path to Win32 path. Uses dictionary container for
* caching and calls to cygwin_conv_to_win32_path from Cygwin dll
* for actual translation. Returns true on success, else false.
*/
#ifdef __CYGWIN__
static bool PathCygwinToWin32(const char* path, char* win32_path);
#endif
/**
* Return file length
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment