diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 6e32bd92a8..8e59a358ec 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1319,16 +1319,18 @@ cmSystemTools::RenameResult cmSystemTools::RenameFile( #endif } -void cmSystemTools::MoveFileIfDifferent(const std::string& source, - const std::string& destination) +cmsys::Status cmSystemTools::MoveFileIfDifferent( + const std::string& source, const std::string& destination) { + cmsys::Status res = {}; if (FilesDiffer(source, destination)) { if (RenameFile(source, destination)) { - return; + return res; } - CopyFileAlways(source, destination); + res = CopyFileAlways(source, destination); } RemoveFile(source); + return res; } void cmSystemTools::Glob(const std::string& directory, diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index 00a6c707d2..a07c749985 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -211,8 +211,8 @@ public: std::string* err = nullptr); //! Rename a file if contents are different, delete the source otherwise - static void MoveFileIfDifferent(const std::string& source, - const std::string& destination); + static cmsys::Status MoveFileIfDifferent(const std::string& source, + const std::string& destination); /** * Run a single executable command