mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 00:11:07 -06:00
KWSys 2021-09-03 (0da908d4)
Code extracted from:
https://gitlab.kitware.com/utils/kwsys.git
at commit 0da908d419f80a32c361d28d7ce364b8a80ae2c2 (master).
Upstream Shortlog
-----------------
Ben Boeckel (2):
40bbf3fd Status: offer an `IsSuccess` method
a6a0bb15 Status: use the new IsSuccess method
Brad King (1):
5d4c8b04 SystemInformation: Simplify demangle buffer management
ulatekh (1):
4ef5b106 SystemTools: Ensure Windows Vista APIs are available before using them
This commit is contained in:
committed by
Brad King
parent
7fc3f7001a
commit
00ccc0f47c
@@ -55,7 +55,10 @@ public:
|
||||
#endif
|
||||
|
||||
/** Return true on "Success", false otherwise. */
|
||||
explicit operator bool() const { return this->Kind_ == Kind::Success; }
|
||||
bool IsSuccess() const { return this->Kind_ == Kind::Success; }
|
||||
|
||||
/** Return true on "Success", false otherwise. */
|
||||
explicit operator bool() const { return this->IsSuccess(); }
|
||||
|
||||
/** Return the kind of status. */
|
||||
Kind GetKind() const { return this->Kind_; }
|
||||
|
||||
@@ -1356,14 +1356,12 @@ std::string SymbolProperties::Demangle(const char* symbol) const
|
||||
std::string result = safes(symbol);
|
||||
# if defined(KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE)
|
||||
int status = 0;
|
||||
size_t bufferLen = 1024;
|
||||
char* buffer = (char*)malloc(1024);
|
||||
char* demangledSymbol =
|
||||
abi::__cxa_demangle(symbol, buffer, &bufferLen, &status);
|
||||
abi::__cxa_demangle(symbol, nullptr, nullptr, &status);
|
||||
if (!status) {
|
||||
result = demangledSymbol;
|
||||
}
|
||||
free(buffer);
|
||||
free(demangledSymbol);
|
||||
# else
|
||||
(void)symbol;
|
||||
# endif
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && !defined(_WIN32_WINNT)
|
||||
# define _WIN32_WINNT _WIN32_WINNT_VISTA
|
||||
#endif
|
||||
|
||||
#include "kwsysPrivate.h"
|
||||
#include KWSYS_HEADER(RegularExpression.hxx)
|
||||
#include KWSYS_HEADER(SystemTools.hxx)
|
||||
@@ -2419,7 +2423,7 @@ Status SystemTools::CopyFileAlways(std::string const& source,
|
||||
|
||||
if (SystemTools::FileIsDirectory(source)) {
|
||||
status = SystemTools::MakeDirectory(destination);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
@@ -2444,17 +2448,17 @@ Status SystemTools::CopyFileAlways(std::string const& source,
|
||||
// Create destination directory
|
||||
if (!destination_dir.empty()) {
|
||||
status = SystemTools::MakeDirectory(destination_dir);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
status = SystemTools::CloneFileContent(source, real_destination);
|
||||
// if cloning did not succeed, fall back to blockwise copy
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
status = SystemTools::CopyFileContentBlockwise(source, real_destination);
|
||||
}
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -2484,11 +2488,11 @@ Status SystemTools::CopyADirectory(std::string const& source,
|
||||
Status status;
|
||||
Directory dir;
|
||||
status = dir.Load(source);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
status = SystemTools::MakeDirectory(destination);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -2503,12 +2507,12 @@ Status SystemTools::CopyADirectory(std::string const& source,
|
||||
fullDestPath += "/";
|
||||
fullDestPath += dir.GetFile(static_cast<unsigned long>(fileNum));
|
||||
status = SystemTools::CopyADirectory(fullPath, fullDestPath, always);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
status = SystemTools::CopyAFile(fullPath, destination, always);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -2660,7 +2664,7 @@ Status SystemTools::RemoveADirectory(std::string const& source)
|
||||
Status status;
|
||||
Directory dir;
|
||||
status = dir.Load(source);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -2674,12 +2678,12 @@ Status SystemTools::RemoveADirectory(std::string const& source)
|
||||
if (SystemTools::FileIsDirectory(fullPath) &&
|
||||
!SystemTools::FileIsSymlink(fullPath)) {
|
||||
status = SystemTools::RemoveADirectory(fullPath);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
} else {
|
||||
status = SystemTools::RemoveFile(fullPath);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -3143,7 +3147,7 @@ Status SystemTools::ReadSymlink(std::string const& newName,
|
||||
status = Status::Windows_GetLastError();
|
||||
}
|
||||
CloseHandle(hFile);
|
||||
if (!status) {
|
||||
if (!status.IsSuccess()) {
|
||||
return status;
|
||||
}
|
||||
PREPARSE_DATA_BUFFER data =
|
||||
|
||||
@@ -122,7 +122,7 @@ int _copyDirectoryTest()
|
||||
}
|
||||
const Status copysuccess = SystemTools::CopyADirectory(source, destination);
|
||||
const bool destinationexists = SystemTools::PathExists(destination);
|
||||
if (copysuccess) {
|
||||
if (copysuccess.IsSuccess()) {
|
||||
std::cerr << "CopyADirectory should have returned false" << std::endl;
|
||||
SystemTools::RemoveADirectory(destination);
|
||||
return 3;
|
||||
|
||||
@@ -31,6 +31,10 @@ int testStatus(int, char* [])
|
||||
std::cerr << "Status Success constructor does not produce Success\n";
|
||||
res = false;
|
||||
}
|
||||
if (!status.IsSuccess()) {
|
||||
std::cerr << "Status Success gives false IsSuccess\n";
|
||||
res = false;
|
||||
}
|
||||
if (!status) {
|
||||
std::cerr << "Status Success kind is not true\n";
|
||||
res = false;
|
||||
@@ -55,6 +59,10 @@ int testStatus(int, char* [])
|
||||
std::cerr << "Status POSIX constructor does not produce POSIX\n";
|
||||
res = false;
|
||||
}
|
||||
if (status.IsSuccess()) {
|
||||
std::cerr << "Status POSIX gives true IsSuccess\n";
|
||||
res = false;
|
||||
}
|
||||
if (status) {
|
||||
std::cerr << "Status POSIX kind is not false\n";
|
||||
res = false;
|
||||
@@ -87,6 +95,10 @@ int testStatus(int, char* [])
|
||||
std::cerr << "Status Windows constructor does not produce Windows\n";
|
||||
res = false;
|
||||
}
|
||||
if (status.IsSuccess()) {
|
||||
std::cerr << "Status Windows gives true IsSuccess\n";
|
||||
res = false;
|
||||
}
|
||||
if (status) {
|
||||
std::cerr << "Status Windows kind is not false\n";
|
||||
res = false;
|
||||
|
||||
@@ -436,7 +436,7 @@ static bool CheckFileOperations()
|
||||
if (symlinkStatus.GetWindows() != ERROR_PRIVILEGE_NOT_HELD)
|
||||
#endif
|
||||
{
|
||||
if (!symlinkStatus) {
|
||||
if (!symlinkStatus.IsSuccess()) {
|
||||
std::cerr << "CreateSymlink for: " << testBadSymlink << " -> "
|
||||
<< testBadSymlinkTgt
|
||||
<< " failed: " << symlinkStatus.GetString() << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user