فهرست منبع

ENH: Detect if there were problems writing file

Andy Cedilnik 21 سال پیش
والد
کامیت
d1470b7d7c
1فایلهای تغییر یافته به همراه11 افزوده شده و 4 حذف شده
  1. 11 4
      Source/cmMakefile.cxx

+ 11 - 4
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)