Jelajahi Sumber

cmFind*Command: Simplify file validation code paths

Brad King 1 tahun lalu
induk
melakukan
808ae84483
2 mengubah file dengan 11 tambahan dan 13 penghapusan
  1. 2 5
      Source/cmFindLibraryCommand.cxx
  2. 9 8
      Source/cmFindProgramCommand.cxx

+ 2 - 5
Source/cmFindLibraryCommand.cxx

@@ -422,18 +422,15 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path,
   if (name.TryRaw) {
     std::string testPath = cmStrCat(path, name.Raw);
 
-    const bool exists = cmSystemTools::FileExists(testPath, true);
-    if (!exists) {
-      this->DebugLibraryFailed(name.Raw, path);
-    } else {
+    if (cmSystemTools::FileExists(testPath, true)) {
       testPath = cmSystemTools::CollapseFullPath(testPath);
       if (this->Validate(testPath)) {
         this->DebugLibraryFound(name.Raw, path);
         this->BestPath = testPath;
         return true;
       }
-      this->DebugLibraryFailed(name.Raw, path);
     }
+    this->DebugLibraryFailed(name.Raw, path);
   }
 
   // No library file has yet been found.

+ 9 - 8
Source/cmFindProgramCommand.cxx

@@ -88,17 +88,18 @@ struct cmFindProgramHelper
                          std::string testNameExt = cmStrCat(name, ext);
                          std::string testPath =
                            cmSystemTools::CollapseFullPath(testNameExt, path);
-                         bool exists = this->FileIsValid(testPath);
-                         exists ? this->DebugSearches.FoundAt(testPath)
-                                : this->DebugSearches.FailedAt(testPath);
-                         if (exists) {
-                           this->BestPath = testPath;
-                           return true;
+                         if (this->FileIsExecutable(testPath)) {
+                           if (this->FindBase->Validate(testPath)) {
+                             this->BestPath = testPath;
+                             this->DebugSearches.FoundAt(testPath);
+                             return true;
+                           }
                          }
+                         this->DebugSearches.FailedAt(testPath);
                          return false;
                        });
   }
-  bool FileIsValid(std::string const& file) const
+  bool FileIsExecutable(std::string const& file) const
   {
     if (!this->FileIsExecutableCMP0109(file)) {
       return false;
@@ -114,7 +115,7 @@ struct cmFindProgramHelper
       }
     }
 #endif
-    return this->FindBase->Validate(file);
+    return true;
   }
   bool FileIsExecutableCMP0109(std::string const& file) const
   {