Selaa lähdekoodia

add better testing for unlink

Bill Hoffman 23 vuotta sitten
vanhempi
sitoutus
62b612fbf8
3 muutettua tiedostoa jossa 19 lisäystä ja 2 poistoa
  1. 9 1
      Source/cmSystemTools.cxx
  2. 4 0
      Source/cmSystemTools.h
  3. 6 1
      Source/cmTryCompileCommand.cxx

+ 9 - 1
Source/cmSystemTools.cxx

@@ -15,7 +15,6 @@
 
 =========================================================================*/
 #include "cmSystemTools.h"   
-#include "errno.h"
 #include <stdio.h>
 #include <sys/stat.h>
 #include "cmRegularExpression.h"
@@ -1166,6 +1165,15 @@ long int cmSystemTools::ModifiedTime(const char* filename)
 }
 
 
+void cmSystemTools::ReportLastSystemError(const char* msg)
+{
+  int e = errno;
+  std::string m = msg;
+  m += ": System Error: ";
+  m += strerror(e);
+  cmSystemTools::Error(m.c_str());
+}
+
   
 bool cmSystemTools::RemoveFile(const char* source)
 {

+ 4 - 0
Source/cmSystemTools.h

@@ -353,6 +353,10 @@ public:
    */
   static void SetRunCommandHideConsole(bool v){s_RunCommandHideConsole = v;}
   static bool GetRunCommandHideConsole(){ return s_RunCommandHideConsole;}
+  /** Call cmSystemTools::Error with the message m, plus the
+   * result of strerror(errno)
+   */
+  static void ReportLastSystemError(const char* m);
   
   /** When building DEBUG with MSVC, this enables a hook that prevents
    * error dialogs from popping up if the program is being run from

+ 6 - 1
Source/cmTryCompileCommand.cxx

@@ -280,7 +280,12 @@ void cmTryCompileCommand::CleanupFiles(const char* binDir)
         }
       else
         {
-        cmSystemTools::RemoveFile(fullPath.c_str());
+        if(!cmSystemTools::RemoveFile(fullPath.c_str()))
+          {
+          std::string m = "Remove failed on file: ";
+          m += fullPath;
+          cmSystemTools::ReportLastSystemError(m.c_str());
+          }
         }
       }
     }