KWSys 2016-08-03 (6d23dd7e)
Code extracted from: http://public.kitware.com/KWSys.git at commit 6d23dd7e455a7b2088c4ec6dce760d8243b84ee6 (master). Upstream Shortlog ----------------- Ben Boeckel (1): 6d23dd7e SystemTools: add a PathExists method
This commit is contained in:
parent
3e6ec47c42
commit
6c0820a874
|
@ -1291,6 +1291,32 @@ bool SystemTools::SameFile(const std::string& file1, const std::string& file2)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
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)
|
||||||
|
return (GetFileAttributesW(
|
||||||
|
SystemTools::ConvertToWindowsExtendedPath(path).c_str())
|
||||||
|
!= INVALID_FILE_ATTRIBUTES);
|
||||||
|
#else
|
||||||
|
struct stat st;
|
||||||
|
return lstat(path.c_str(), &st) == 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool SystemTools::FileExists(const char* filename)
|
bool SystemTools::FileExists(const char* filename)
|
||||||
{
|
{
|
||||||
|
|
|
@ -305,6 +305,11 @@ public:
|
||||||
*/
|
*/
|
||||||
static std::string ConvertToWindowsOutputPath(const std::string&);
|
static std::string ConvertToWindowsOutputPath(const std::string&);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if a path with the given name exists in the current directory.
|
||||||
|
*/
|
||||||
|
static bool PathExists(const std::string& path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true if a file exists in the current directory.
|
* Return true if a file exists in the current directory.
|
||||||
* If isFile = true, then make sure the file is a file and
|
* If isFile = true, then make sure the file is a file and
|
||||||
|
|
|
@ -204,6 +204,14 @@ static bool CheckFileOperations()
|
||||||
<< testNewDir << std::endl;
|
<< testNewDir << std::endl;
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
|
// check existence
|
||||||
|
if (!kwsys::SystemTools::PathExists(testNewDir))
|
||||||
|
{
|
||||||
|
std::cerr
|
||||||
|
<< "Problem with PathExists for: "
|
||||||
|
<< testNewDir << std::endl;
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
// remove it
|
// remove it
|
||||||
if (!kwsys::SystemTools::RemoveADirectory(testNewDir))
|
if (!kwsys::SystemTools::RemoveADirectory(testNewDir))
|
||||||
{
|
{
|
||||||
|
@ -221,6 +229,15 @@ static bool CheckFileOperations()
|
||||||
<< testNewDir << std::endl;
|
<< testNewDir << std::endl;
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
|
// check existence
|
||||||
|
if (kwsys::SystemTools::PathExists(testNewDir))
|
||||||
|
{
|
||||||
|
std::cerr
|
||||||
|
<< "After RemoveADirectory: "
|
||||||
|
<< "Problem with PathExists for: "
|
||||||
|
<< testNewDir << std::endl;
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
// create it using the char* version
|
// create it using the char* version
|
||||||
if (!kwsys::SystemTools::MakeDirectory(testNewDir.c_str()))
|
if (!kwsys::SystemTools::MakeDirectory(testNewDir.c_str()))
|
||||||
{
|
{
|
||||||
|
@ -329,6 +346,31 @@ static bool CheckFileOperations()
|
||||||
res = false;
|
res = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calling with an empty string should return false
|
||||||
|
if (kwsys::SystemTools::PathExists(std::string()))
|
||||||
|
{
|
||||||
|
std::cerr
|
||||||
|
<< "Problem with PathExists(std::string())"
|
||||||
|
<< std::endl;
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
|
// PathExists(x) should return true on a directory
|
||||||
|
if (!kwsys::SystemTools::PathExists(testNewDir))
|
||||||
|
{
|
||||||
|
std::cerr
|
||||||
|
<< "Problem with PathExists for: "
|
||||||
|
<< testNewDir << std::endl;
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
|
// should work, was created as new file before
|
||||||
|
if (!kwsys::SystemTools::PathExists(testNewFile))
|
||||||
|
{
|
||||||
|
std::cerr
|
||||||
|
<< "Problem with PathExists for: "
|
||||||
|
<< testNewDir << std::endl;
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Reset umask
|
// Reset umask
|
||||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
// NOTE: Windows doesn't support toggling _S_IREAD.
|
// NOTE: Windows doesn't support toggling _S_IREAD.
|
||||||
|
|
Loading…
Reference in New Issue