summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemTools.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-05-08 18:18:09 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-05-08 18:18:09 (GMT)
commit1d8043cb4fd6c1bfa3091ea11cd8cde956fcfb99 (patch)
tree8df30726d679088435216a1d09b5be9547ecef15 /Source/kwsys/SystemTools.cxx
parente1b163d4db9144bdf1234ee9787961e220e773d7 (diff)
downloadCMake-1d8043cb4fd6c1bfa3091ea11cd8cde956fcfb99.zip
CMake-1d8043cb4fd6c1bfa3091ea11cd8cde956fcfb99.tar.gz
CMake-1d8043cb4fd6c1bfa3091ea11cd8cde956fcfb99.tar.bz2
ENH: search for program without extensions
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r--Source/kwsys/SystemTools.cxx35
1 files changed, 16 insertions, 19 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 1a878d5..06eccde 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -2018,7 +2018,7 @@ kwsys_stl::string SystemTools::FindProgram(
}
kwsys_stl::string name = nameIn;
kwsys_stl::vector<kwsys_stl::string> extensions;
-#if defined (_WIN32) || defined(__CYGWIN__) | defined(__MINGW32__)
+#if defined (_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)
bool hasExtension = false;
// check to see if the name already has a .xxx at
// the end of it
@@ -2034,8 +2034,8 @@ kwsys_stl::string SystemTools::FindProgram(
}
#endif
kwsys_stl::string tryPath;
- // first try the name as it was given (adding extensions
- // if needed.)
+
+ // first try with extensions if the os supports them
if(extensions.size())
{
for(kwsys_stl::vector<kwsys_stl::string>::iterator i =
@@ -2050,14 +2050,12 @@ kwsys_stl::string SystemTools::FindProgram(
}
}
}
- else
+ // now try just the name
+ tryPath = name;
+ if(SystemTools::FileExists(tryPath.c_str()) &&
+ !SystemTools::FileIsDirectory(tryPath.c_str()))
{
- tryPath = name;
- if(SystemTools::FileExists(tryPath.c_str()) &&
- !SystemTools::FileIsDirectory(tryPath.c_str()))
- {
- return SystemTools::CollapseFullPath(tryPath.c_str());
- }
+ return SystemTools::CollapseFullPath(tryPath.c_str());
}
// now construct the path
kwsys_stl::vector<kwsys_stl::string> path;
@@ -2080,6 +2078,7 @@ kwsys_stl::string SystemTools::FindProgram(
// Remove double quotes from the path on windows
SystemTools::ReplaceString(*p, "\"", "");
#endif
+ // first try with extensions
if(extensions.size())
{
for(kwsys_stl::vector<kwsys_stl::string>::iterator ext
@@ -2096,16 +2095,14 @@ kwsys_stl::string SystemTools::FindProgram(
}
}
}
- else
+ // now try it without them
+ tryPath = *p;
+ tryPath += "/";
+ tryPath += name;
+ if(SystemTools::FileExists(tryPath.c_str()) &&
+ !SystemTools::FileIsDirectory(tryPath.c_str()))
{
- tryPath = *p;
- tryPath += "/";
- tryPath += name;
- if(SystemTools::FileExists(tryPath.c_str()) &&
- !SystemTools::FileIsDirectory(tryPath.c_str()))
- {
- return SystemTools::CollapseFullPath(tryPath.c_str());
- }
+ return SystemTools::CollapseFullPath(tryPath.c_str());
}
}
// Couldn't find the program.