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
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
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)
|
||||
{
|
||||
|
|
|
@ -305,6 +305,11 @@ public:
|
|||
*/
|
||||
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.
|
||||
* If isFile = true, then make sure the file is a file and
|
||||
|
|
|
@ -204,6 +204,14 @@ static bool CheckFileOperations()
|
|||
<< testNewDir << std::endl;
|
||||
res = false;
|
||||
}
|
||||
// check existence
|
||||
if (!kwsys::SystemTools::PathExists(testNewDir))
|
||||
{
|
||||
std::cerr
|
||||
<< "Problem with PathExists for: "
|
||||
<< testNewDir << std::endl;
|
||||
res = false;
|
||||
}
|
||||
// remove it
|
||||
if (!kwsys::SystemTools::RemoveADirectory(testNewDir))
|
||||
{
|
||||
|
@ -221,6 +229,15 @@ static bool CheckFileOperations()
|
|||
<< testNewDir << std::endl;
|
||||
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
|
||||
if (!kwsys::SystemTools::MakeDirectory(testNewDir.c_str()))
|
||||
{
|
||||
|
@ -329,6 +346,31 @@ static bool CheckFileOperations()
|
|||
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
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
// NOTE: Windows doesn't support toggling _S_IREAD.
|
||||
|
|
Loading…
Reference in New Issue