From d1470b7d7c65b22f3f93183e68b1f8fed73e82fe Mon Sep 17 00:00:00 2001
From: Andy Cedilnik <andy.cedilnik@kitware.com>
Date: Thu, 27 May 2004 12:53:15 -0400
Subject: ENH: Detect if there were problems writing file

---
 Source/cmMakefile.cxx | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index e10b5ad..2633746 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -2310,6 +2310,7 @@ void cmMakefile::ConfigureString(const std::string& input,
 int cmMakefile::ConfigureFile(const char* infile, const char* outfile, 
   bool copyonly, bool atOnly, bool escapeQuotes)
 {
+  int res = 1;
   if ( !cmSystemTools::FileExists(infile) )
     {
     cmSystemTools::Error("File ", infile, " does not exist.");
@@ -2369,12 +2370,18 @@ int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
     // close the files before attempting to copy
     fin.close();
     fout.close();
-    cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(),
-      soutfile.c_str());
+    if ( !cmSystemTools::CopyFileIfDifferent(tempOutputFile.c_str(),
+      soutfile.c_str()) )
+      {
+      res = 0;
+      }
+    else
+      {
+      cmSystemTools::SetPermissions(soutfile.c_str(), perm);
+      }
     cmSystemTools::RemoveFile(tempOutputFile.c_str());
-    cmSystemTools::SetPermissions(soutfile.c_str(), perm);
     }
-  return 1;
+  return res;
 }
 
 void cmMakefile::AddWrittenFile(const char* file)
-- 
cgit v0.12