Browse Source

BUG: make sure find program does not find directories

Bill Hoffman 24 years ago
parent
commit
189a9db9b6
1 changed files with 8 additions and 4 deletions
  1. 8 4
      Source/cmSystemTools.cxx

+ 8 - 4
Source/cmSystemTools.cxx

@@ -840,13 +840,15 @@ std::string cmSystemTools::FindProgram(const char* name,
 				       const std::vector<std::string>& userPaths)
 {
   // See if the executable exists as written.
-  if(cmSystemTools::FileExists(name))
+  if(cmSystemTools::FileExists(name) &&
+      !cmSystemTools::FileIsDirectory(name))
     {
     return cmSystemTools::CollapseFullPath(name);
     }
   std::string tryPath = name;
   tryPath += cmSystemTools::GetExecutableExtension();
-  if(cmSystemTools::FileExists(tryPath.c_str()))
+  if(cmSystemTools::FileExists(tryPath.c_str()) &&
+     !cmSystemTools::FileIsDirectory(tryPath.c_str()))
     {
     return cmSystemTools::CollapseFullPath(tryPath.c_str());
     }
@@ -861,12 +863,14 @@ std::string cmSystemTools::FindProgram(const char* name,
     tryPath = *p;
     tryPath += "/";
     tryPath += name;
-    if(cmSystemTools::FileExists(tryPath.c_str()))
+    if(cmSystemTools::FileExists(tryPath.c_str()) &&
+      !cmSystemTools::FileIsDirectory(tryPath.c_str()))
       {
       return cmSystemTools::CollapseFullPath(tryPath.c_str());
       }
     tryPath += cmSystemTools::GetExecutableExtension();
-    if(cmSystemTools::FileExists(tryPath.c_str()))
+    if(cmSystemTools::FileExists(tryPath.c_str()) &&
+       !cmSystemTools::FileIsDirectory(tryPath.c_str()))
       {
       return cmSystemTools::CollapseFullPath(tryPath.c_str());
       }