Parcourir la source

ENH: add better error reporting for file open failures

Bill Hoffman il y a 21 ans
Parent
commit
b5bdf2cb0a

+ 2 - 1
Source/cmCacheManager.cxx

@@ -327,9 +327,10 @@ bool cmCacheManager::SaveCache(const char* path)
   tempFile += ".tmp";
   std::ofstream fout(tempFile.c_str());
   if(!fout)
-    {
+    {  
     cmSystemTools::Error("Unable to open cache file for save. ", 
                          cacheFile.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return false;
     }
   // before writting the cache, update the version numbers

+ 3 - 1
Source/cmDumpDocumentation.cxx

@@ -60,7 +60,8 @@ int DumpHTML(const char* outname)
   std::ofstream fout(outname);
   if(!fout)
     {
-    std::cerr << "failed to open output file: " << outname << "\n";
+    std::cerr << "failed to open output file: " << outname << "\n";  
+    cmSystemTools::ReportLastSystemError("");
     return -1;
     }
 
@@ -104,6 +105,7 @@ int DumpForCoverage(const char* outname)
     if(!fout)
       {
       std::cerr << "failed to open output file: " << outname << "\n";
+      cmSystemTools::ReportLastSystemError("");
       return -1;
       }
     return DumpForCoverageToStream(fout);

+ 1 - 0
Source/cmEnableTestingCommand.cxx

@@ -39,6 +39,7 @@ void cmEnableTestingCommand::FinalPass()
   if (!fout)
     {
     cmSystemTools::Error("Error Writing ", fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   

+ 1 - 0
Source/cmExportLibraryDependencies.cxx

@@ -82,6 +82,7 @@ void cmExportLibraryDependenciesCommand::FinalPass()
   if (!fout)
     {
     cmSystemTools::Error("Error Writing ", fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   cmake* cm = m_Makefile->GetCMakeInstance();

+ 1 - 0
Source/cmGlobalCodeWarriorGenerator.cxx

@@ -94,6 +94,7 @@ void cmGlobalCodeWarriorGenerator::OutputProject()
     {
     cmSystemTools::Error("Error can not open project file for write: "
                          ,fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   this->WriteProject(fout);

+ 1 - 0
Source/cmGlobalVisualStudio6Generator.cxx

@@ -364,6 +364,7 @@ void cmGlobalVisualStudio6Generator::OutputDSWFile(cmLocalGenerator* root,
     {
     cmSystemTools::Error("Error can not open DSW file for write: ",
                          fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   this->WriteDSWFile(fout, root, generators);

+ 1 - 0
Source/cmGlobalVisualStudio7Generator.cxx

@@ -291,6 +291,7 @@ void cmGlobalVisualStudio7Generator::OutputSLNFile(cmLocalGenerator* root,
     {
     cmSystemTools::Error("Error can not open DSW file for write: ",
                          fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   this->WriteSLNFile(fout.GetStream(), root, generators);

+ 1 - 0
Source/cmLocalUnixMakefileGenerator.cxx

@@ -192,6 +192,7 @@ void cmLocalUnixMakefileGenerator::OutputMakefile(const char* file,
   if(!fout)
     {
     cmSystemTools::Error("Error can not open for write: ", file);
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   fout << "# CMAKE generated Makefile, DO NOT EDIT!\n"

+ 1 - 0
Source/cmLocalVisualStudio6Generator.cxx

@@ -149,6 +149,7 @@ void cmLocalVisualStudio6Generator::CreateSingleDSP(const char *lname, cmTarget
   if(!fout)
     {
     cmSystemTools::Error("Error Writing ", fname.c_str());
+    cmSystemTools::ReportLastSystemError("");
     }
   this->WriteDSPFile(fout,lname,target);
   fout.close();

+ 1 - 0
Source/cmMakefile.cxx

@@ -2396,6 +2396,7 @@ int cmMakefile::ConfigureFile(const char* infile, const char* outfile,
       cmSystemTools::Error(
         "Could not open file for write in copy operation ", 
                            tempOutputFile.c_str());
+      cmSystemTools::ReportLastSystemError("");
       return 0;
       }
     std::ifstream fin(sinfile.c_str());

+ 1 - 0
Source/cmTryCompileCommand.cxx

@@ -141,6 +141,7 @@ int cmTryCompileCommand::CoreTryCompileCode(
       {
       cmSystemTools::Error("Failed to create CMakeList file for ", 
                            outFileName.c_str());
+      cmSystemTools::ReportLastSystemError("");
       return -1;
       }
     

+ 1 - 0
Source/cmUseMangledMesaCommand.cxx

@@ -80,6 +80,7 @@ CopyAndFullPathMesaHeader(const char* source,
     {
     cmSystemTools::Error("Could not open file for write in copy operation: ", 
                          tempOutputFile.c_str(), outdir);
+    cmSystemTools::ReportLastSystemError("");
     return;
     }
   std::ifstream fin(source);

+ 1 - 0
Source/cmVTKWrapPythonCommand.cxx

@@ -171,6 +171,7 @@ bool cmVTKWrapPythonCommand::WriteInit(const char *kitName,
   FILE *fout = fopen(tempOutputFile.c_str(),"w");
   if (!fout)
     {
+    cmSystemTools::ReportLastSystemError("cmVTKWrapPythonCommand error:");
     return false;
     }
   

+ 1 - 0
Source/cmVTKWrapTclCommand.cxx

@@ -219,6 +219,7 @@ bool cmVTKWrapTclCommand::WriteInit(const char *kitName,
   if (!fout)
     {
     cmSystemTools::Error("Failed to open TclInit file for ", tempOutputFile.c_str());
+    cmSystemTools::ReportLastSystemError("");
     return false;
     }