Browse Source

use cmSystemTools::MoveFileIfDifferent()

This is better than doing CopyFileIfDifferent() followed by RemoveFile() in
two ways:

 - it is more efficient, as it avoids disk I/O for the data, even if the
   files here are usually small
 - it is atomic, so an abort during the copy will not leave a destination file
   with partial data behind
Rolf Eike Beer 6 years ago
parent
commit
5b96fd5b81
3 changed files with 4 additions and 8 deletions
  1. 2 4
      Source/cmGeneratorTarget.cxx
  2. 1 2
      Source/cmLocalGenerator.cxx
  3. 1 2
      Source/cmUseMangledMesaCommand.cxx

+ 2 - 4
Source/cmGeneratorTarget.cxx

@@ -3417,8 +3417,7 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
         file << pchEpilogue << "\n";
       }
     }
-    cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
-    cmSystemTools::RemoveFile(filename_tmp);
+    cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
   }
   return inserted.first->second;
 }
@@ -3451,8 +3450,7 @@ std::string cmGeneratorTarget::GetPchSource(const std::string& config,
       cmGeneratedFileStream file(filename_tmp);
       file << "/* generated by CMake */\n";
     }
-    cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
-    cmSystemTools::RemoveFile(filename_tmp);
+    cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
   }
   return inserted.first->second;
 }

+ 1 - 2
Source/cmLocalGenerator.cxx

@@ -2275,8 +2275,7 @@ void cmLocalGenerator::AddUnityBuild(cmGeneratorTarget* target,
           }
         }
       }
-      cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
-      cmSystemTools::RemoveFile(filename_tmp);
+      cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
 
       target->AddSource(filename, true);
 

+ 1 - 2
Source/cmUseMangledMesaCommand.cxx

@@ -98,7 +98,6 @@ void CopyAndFullPathMesaHeader(const std::string& source,
   // close the files before attempting to copy
   fin.close();
   fout.close();
-  cmSystemTools::CopyFileIfDifferent(tempOutputFile, outFile);
-  cmSystemTools::RemoveFile(tempOutputFile);
+  cmSystemTools::MoveFileIfDifferent(tempOutputFile, outFile);
 }
 }