cmSystemTools: introduce MoveFileIfDifferent()

This commit is contained in:
Rolf Eike Beer
2019-09-09 09:09:48 +02:00
parent d803d6b59f
commit 5eaf1e1be2
2 changed files with 16 additions and 0 deletions

View File

@@ -855,6 +855,18 @@ bool cmSystemTools::RenameFile(const std::string& oldname,
#endif
}
void cmSystemTools::MoveFileIfDifferent(const std::string& source,
const std::string& destination)
{
if (FilesDiffer(source, destination)) {
if (RenameFile(source, destination)) {
return;
}
CopyFileAlways(source, destination);
}
RemoveFile(source);
}
std::string cmSystemTools::ComputeFileHash(const std::string& source,
cmCryptoHash::Algo algo)
{

View File

@@ -131,6 +131,10 @@ public:
static bool RenameFile(const std::string& oldname,
const std::string& newname);
//! Rename a file if contents are different, delete the source otherwise
static void MoveFileIfDifferent(const std::string& source,
const std::string& destination);
//! Compute the hash of a file
static std::string ComputeFileHash(const std::string& source,
cmCryptoHash::Algo algo);