mirror of
https://github.com/reactos/CMake.git
synced 2024-11-30 15:00:41 +00:00
Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys: KWSys 2017-01-16 (a423d829)
This commit is contained in:
commit
ee77941a1f
@ -818,6 +818,9 @@ IF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS)
|
||||
# for symbol lookup using dladdr
|
||||
TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} ${CMAKE_DL_LIBS})
|
||||
ENDIF()
|
||||
IF (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} socket)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
@ -763,7 +763,7 @@ bool SystemTools::MakeDirectory(const char* path)
|
||||
|
||||
bool SystemTools::MakeDirectory(const std::string& path)
|
||||
{
|
||||
if (SystemTools::FileExists(path)) {
|
||||
if (SystemTools::PathExists(path)) {
|
||||
return SystemTools::FileIsDirectory(path);
|
||||
}
|
||||
if (path.empty()) {
|
||||
@ -1280,7 +1280,7 @@ bool SystemTools::PathCygwinToWin32(const char* path, char* win32_path)
|
||||
|
||||
bool SystemTools::Touch(const std::string& filename, bool create)
|
||||
{
|
||||
if (!SystemTools::FileExists(filename)) {
|
||||
if (!SystemTools::PathExists(filename)) {
|
||||
if (create) {
|
||||
FILE* file = Fopen(filename, "a+b");
|
||||
if (file) {
|
||||
@ -4289,7 +4289,7 @@ bool SystemTools::GetLineFromStream(std::istream& is, std::string& line,
|
||||
// if we read too much then truncate the buffer
|
||||
if (leftToRead > 0) {
|
||||
if (static_cast<long>(length) > leftToRead) {
|
||||
buffer[leftToRead - 1] = 0;
|
||||
buffer[leftToRead] = 0;
|
||||
leftToRead = 0;
|
||||
} else {
|
||||
leftToRead -= static_cast<long>(length);
|
||||
@ -4389,10 +4389,7 @@ bool SystemTools::SetPermissions(const char* file, mode_t mode,
|
||||
bool SystemTools::SetPermissions(const std::string& file, mode_t mode,
|
||||
bool honor_umask)
|
||||
{
|
||||
// TEMPORARY / TODO: After FileExists calls lstat() instead of
|
||||
// access(), change this call to FileExists instead of
|
||||
// TestFileAccess so that we don't follow symlinks.
|
||||
if (!SystemTools::TestFileAccess(file, TEST_FILE_OK)) {
|
||||
if (!SystemTools::PathExists(file)) {
|
||||
return false;
|
||||
}
|
||||
if (honor_umask) {
|
||||
|
@ -6,11 +6,13 @@
|
||||
#pragma warning(disable : 4786)
|
||||
#endif
|
||||
|
||||
#include KWSYS_HEADER(FStream.hxx)
|
||||
#include KWSYS_HEADER(SystemTools.hxx)
|
||||
|
||||
// Work-around CMake dependency scanning limitation. This must
|
||||
// duplicate the above list of headers.
|
||||
#if 0
|
||||
#include "FStream.hxx.in"
|
||||
#include "SystemTools.hxx.in"
|
||||
#endif
|
||||
|
||||
@ -857,6 +859,55 @@ static bool CheckFind()
|
||||
return res;
|
||||
}
|
||||
|
||||
static bool CheckGetLineFromStream()
|
||||
{
|
||||
const std::string fileWithFiveCharsOnFirstLine(TEST_SYSTEMTOOLS_SOURCE_DIR
|
||||
"/README.rst");
|
||||
|
||||
kwsys::ifstream file(fileWithFiveCharsOnFirstLine.c_str(), std::ios::in);
|
||||
|
||||
if (!file) {
|
||||
std::cerr << "Problem opening: " << fileWithFiveCharsOnFirstLine
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string line;
|
||||
bool has_newline = false;
|
||||
bool result;
|
||||
|
||||
file.seekg(0, std::ios::beg);
|
||||
result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
|
||||
if (!result || line.size() != 5) {
|
||||
std::cerr << "First line does not have five characters: " << line.size()
|
||||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
file.seekg(0, std::ios::beg);
|
||||
result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline, -1);
|
||||
if (!result || line.size() != 5) {
|
||||
std::cerr << "First line does not have five characters after rewind: "
|
||||
<< line.size() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ret = true;
|
||||
|
||||
for (size_t size = 1; size <= 5; ++size) {
|
||||
file.seekg(0, std::ios::beg);
|
||||
result = kwsys::SystemTools::GetLineFromStream(file, line, &has_newline,
|
||||
static_cast<long>(size));
|
||||
if (!result || line.size() != size) {
|
||||
std::cerr << "Should have read " << size << " characters but got "
|
||||
<< line.size() << std::endl;
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
int testSystemTools(int, char* [])
|
||||
{
|
||||
@ -893,5 +944,7 @@ int testSystemTools(int, char* [])
|
||||
|
||||
res &= CheckFind();
|
||||
|
||||
res &= CheckGetLineFromStream();
|
||||
|
||||
return res ? 0 : 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user