diff options
author | Tushar Maheshwari <tushar27192@gmail.com> | 2019-01-15 15:04:46 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-01-16 15:03:35 (GMT) |
commit | 0f08ed89362d207e18b06e806f127cd683b79141 (patch) | |
tree | 890884ead135d0000f4cce22b5970d178ffd5411 /Source/cmSystemTools.cxx | |
parent | 593d986470ce1938436da312e0c93e3c9c07017e (diff) | |
download | CMake-0f08ed89362d207e18b06e806f127cd683b79141.zip CMake-0f08ed89362d207e18b06e806f127cd683b79141.tar.gz CMake-0f08ed89362d207e18b06e806f127cd683b79141.tar.bz2 |
cmSystemTools: Silence CreateLink and CreateSymlink errors
If provided, report errors to a std::string.
This allows "silent" fallback to another flow, like COPY_ON_ERROR.
Diffstat (limited to 'Source/cmSystemTools.cxx')
-rw-r--r-- | Source/cmSystemTools.cxx | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index a1c8c03..52957c1 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -3114,7 +3114,8 @@ std::string cmSystemTools::EncodeURL(std::string const& in, bool escapeSlashes) } bool cmSystemTools::CreateSymlink(const std::string& origName, - const std::string& newName) + const std::string& newName, + std::string* errorMessage) { uv_fs_t req; int flags = 0; @@ -3128,7 +3129,11 @@ bool cmSystemTools::CreateSymlink(const std::string& origName, if (err) { std::string e = "failed to create symbolic link '" + newName + "': " + uv_strerror(err); - cmSystemTools::Error(e.c_str()); + if (errorMessage) { + *errorMessage = std::move(e); + } else { + cmSystemTools::Error(e.c_str()); + } return false; } @@ -3136,7 +3141,8 @@ bool cmSystemTools::CreateSymlink(const std::string& origName, } bool cmSystemTools::CreateLink(const std::string& origName, - const std::string& newName) + const std::string& newName, + std::string* errorMessage) { uv_fs_t req; int err = @@ -3144,7 +3150,11 @@ bool cmSystemTools::CreateLink(const std::string& origName, if (err) { std::string e = "failed to create link '" + newName + "': " + uv_strerror(err); - cmSystemTools::Error(e.c_str()); + if (errorMessage) { + *errorMessage = std::move(e); + } else { + cmSystemTools::Error(e.c_str()); + } return false; } |