Merge topic 'update-kwsys'

3da43137 Merge branch 'upstream-kwsys' into update-kwsys
9a59ae5c KWSys 2015-08-03 (dad68c33)
This commit is contained in:
Brad King 2015-08-04 09:15:12 -04:00 committed by CMake Topic Stage
commit 87b869c1da
3 changed files with 48 additions and 6 deletions

View File

@ -45,9 +45,12 @@ wchar_t* kwsysEncoding_DupToWide(const char* str)
if(length > 0) if(length > 0)
{ {
ret = (wchar_t*)malloc((length)*sizeof(wchar_t)); ret = (wchar_t*)malloc((length)*sizeof(wchar_t));
if(ret)
{
ret[0] = 0; ret[0] = 0;
kwsysEncoding_mbstowcs(ret, str, length); kwsysEncoding_mbstowcs(ret, str, length);
} }
}
return ret; return ret;
} }
@ -72,8 +75,11 @@ char* kwsysEncoding_DupToNarrow(const wchar_t* str)
if(length > 0) if(length > 0)
{ {
ret = (char*)malloc(length); ret = (char*)malloc(length);
if(ret)
{
ret[0] = 0; ret[0] = 0;
kwsysEncoding_wcstombs(ret, str, length); kwsysEncoding_wcstombs(ret, str, length);
} }
}
return ret; return ret;
} }

View File

@ -3198,8 +3198,16 @@ bool SystemTools::FileIsDirectory(const kwsys_stl::string& inName)
bool SystemTools::FileIsSymlink(const kwsys_stl::string& name) bool SystemTools::FileIsSymlink(const kwsys_stl::string& name)
{ {
#if defined( _WIN32 ) #if defined( _WIN32 )
(void)name; DWORD attr = GetFileAttributesW(
SystemTools::ConvertToWindowsExtendedPath(name).c_str());
if (attr != INVALID_FILE_ATTRIBUTES)
{
return (attr & FILE_ATTRIBUTE_REPARSE_POINT) != 0;
}
else
{
return false; return false;
}
#else #else
struct stat fs; struct stat fs;
if(lstat(name.c_str(), &fs) == 0) if(lstat(name.c_str(), &fs) == 0)
@ -4230,6 +4238,11 @@ SystemTools::DetectFileType(const char *filename,
return SystemTools::FileTypeUnknown; return SystemTools::FileTypeUnknown;
} }
if (SystemTools::FileIsDirectory(filename))
{
return SystemTools::FileTypeUnknown;
}
FILE *fp = Fopen(filename, "rb"); FILE *fp = Fopen(filename, "rb");
if (!fp) if (!fp)
{ {
@ -4243,6 +4256,7 @@ SystemTools::DetectFileType(const char *filename,
fclose(fp); fclose(fp);
if (read_length == 0) if (read_length == 0)
{ {
delete [] buffer;
return SystemTools::FileTypeUnknown; return SystemTools::FileTypeUnknown;
} }

View File

@ -98,6 +98,10 @@ static bool CheckEscapeChars(kwsys_stl::string input,
static bool CheckFileOperations() static bool CheckFileOperations()
{ {
bool res = true; bool res = true;
const kwsys_stl::string testNonExistingFile(TEST_SYSTEMTOOLS_SOURCE_DIR
"/testSystemToolsNonExistingFile");
const kwsys_stl::string testDotFile(TEST_SYSTEMTOOLS_SOURCE_DIR
"/.");
const kwsys_stl::string testBinFile(TEST_SYSTEMTOOLS_SOURCE_DIR const kwsys_stl::string testBinFile(TEST_SYSTEMTOOLS_SOURCE_DIR
"/testSystemTools.bin"); "/testSystemTools.bin");
const kwsys_stl::string testTxtFile(TEST_SYSTEMTOOLS_SOURCE_DIR const kwsys_stl::string testTxtFile(TEST_SYSTEMTOOLS_SOURCE_DIR
@ -106,6 +110,24 @@ static bool CheckFileOperations()
"/testSystemToolsNewDir"); "/testSystemToolsNewDir");
const kwsys_stl::string testNewFile(testNewDir + "/testNewFile.txt"); const kwsys_stl::string testNewFile(testNewDir + "/testNewFile.txt");
if (kwsys::SystemTools::DetectFileType(testNonExistingFile.c_str()) !=
kwsys::SystemTools::FileTypeUnknown)
{
kwsys_ios::cerr
<< "Problem with DetectFileType - failed to detect type of: "
<< testNonExistingFile << kwsys_ios::endl;
res = false;
}
if (kwsys::SystemTools::DetectFileType(testDotFile.c_str()) !=
kwsys::SystemTools::FileTypeUnknown)
{
kwsys_ios::cerr
<< "Problem with DetectFileType - failed to detect type of: "
<< testDotFile << kwsys_ios::endl;
res = false;
}
if (kwsys::SystemTools::DetectFileType(testBinFile.c_str()) != if (kwsys::SystemTools::DetectFileType(testBinFile.c_str()) !=
kwsys::SystemTools::FileTypeBinary) kwsys::SystemTools::FileTypeBinary)
{ {