[Cmake-commits] CMake branch, next, updated. v2.8.7-3183-ga2183f1

Brad King brad.king at kitware.com
Wed Mar 14 08:27:18 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  a2183f1165fe7de45e2d3f3a9fc70e2d8e9f3554 (commit)
       via  9eb8e4b22bf56dca81bf2f0507977d4c1fda535e (commit)
      from  2771c36f9476e0d7f948ad7f27665c675da77b44 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a2183f1165fe7de45e2d3f3a9fc70e2d8e9f3554
commit a2183f1165fe7de45e2d3f3a9fc70e2d8e9f3554
Merge: 2771c36 9eb8e4b
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Mar 14 08:27:16 2012 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Mar 14 08:27:16 2012 -0400

    Merge topic 'write-cache-atomically' into next
    
    9eb8e4b Write CMakeCache.txt atomically (#13040)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9eb8e4b22bf56dca81bf2f0507977d4c1fda535e
commit 9eb8e4b22bf56dca81bf2f0507977d4c1fda535e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Mar 14 08:16:05 2012 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Mar 14 08:18:15 2012 -0400

    Write CMakeCache.txt atomically (#13040)
    
    The write code introduced by commit 0b0d1b1d (add CMakeCache.txt
    support, 2001-02-22) uses a temporary file but does not replace the
    original atomically.  Use cmGeneratedFileStream to do both
    copy-if-different and atomic replacement.

diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx
index ab0bb79..47a0e85 100644
--- a/Source/cmCacheManager.cxx
+++ b/Source/cmCacheManager.cxx
@@ -13,6 +13,7 @@
 #include "cmCacheManager.h"
 #include "cmSystemTools.h"
 #include "cmCacheManager.h"
+#include "cmGeneratedFileStream.h"
 #include "cmMakefile.h"
 #include "cmake.h"
 #include "cmVersion.h"
@@ -431,9 +432,8 @@ bool cmCacheManager::SaveCache(const char* path)
 {
   std::string cacheFile = path;
   cacheFile += "/CMakeCache.txt";
-  std::string tempFile = cacheFile;
-  tempFile += ".tmp";
-  std::ofstream fout(tempFile.c_str());
+  cmGeneratedFileStream fout(cacheFile.c_str());
+  fout.SetCopyIfDifferent(true);
   if(!fout)
     {
     cmSystemTools::Error("Unable to open cache file for save. ",
@@ -561,10 +561,7 @@ bool cmCacheManager::SaveCache(const char* path)
       }
     }
   fout << "\n";
-  fout.close();
-  cmSystemTools::CopyFileIfDifferent(tempFile.c_str(),
-                                     cacheFile.c_str());
-  cmSystemTools::RemoveFile(tempFile.c_str());
+  fout.Close();
   std::string checkCacheFile = path;
   checkCacheFile += cmake::GetCMakeFilesDirectory();
   cmSystemTools::MakeDirectory(checkCacheFile.c_str());

-----------------------------------------------------------------------

Summary of changes:
 Source/cmCacheManager.cxx |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list