diff options
author | Brad King <brad.king@kitware.com> | 2015-08-03 17:17:54 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-08-03 17:17:54 (GMT) |
commit | 3da431379bae33374edd7c62c6f4261b4e3a663f (patch) | |
tree | f84a7c4ee33d0eb2dd2cada7329b3dbf189ca874 /Source/kwsys/SystemTools.cxx | |
parent | 7ac2b1256b09044b86c6bd926cc239133beab088 (diff) | |
parent | 9a59ae5c198f7c413bcaf29f1ab107a265677b95 (diff) | |
download | CMake-3da431379bae33374edd7c62c6f4261b4e3a663f.zip CMake-3da431379bae33374edd7c62c6f4261b4e3a663f.tar.gz CMake-3da431379bae33374edd7c62c6f4261b4e3a663f.tar.bz2 |
Merge branch 'upstream-kwsys' into update-kwsys
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 3452259..0714344 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -3198,8 +3198,16 @@ bool SystemTools::FileIsDirectory(const kwsys_stl::string& inName) bool SystemTools::FileIsSymlink(const kwsys_stl::string& name) { #if defined( _WIN32 ) - (void)name; - return false; + DWORD attr = GetFileAttributesW( + SystemTools::ConvertToWindowsExtendedPath(name).c_str()); + if (attr != INVALID_FILE_ATTRIBUTES) + { + return (attr & FILE_ATTRIBUTE_REPARSE_POINT) != 0; + } + else + { + return false; + } #else struct stat fs; if(lstat(name.c_str(), &fs) == 0) @@ -4230,6 +4238,11 @@ SystemTools::DetectFileType(const char *filename, return SystemTools::FileTypeUnknown; } + if (SystemTools::FileIsDirectory(filename)) + { + return SystemTools::FileTypeUnknown; + } + FILE *fp = Fopen(filename, "rb"); if (!fp) { @@ -4243,6 +4256,7 @@ SystemTools::DetectFileType(const char *filename, fclose(fp); if (read_length == 0) { + delete [] buffer; return SystemTools::FileTypeUnknown; } |