summaryrefslogtreecommitdiffstats
path: root/Source/kwsys
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-03-10 22:37:47 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-03-10 22:37:47 (GMT)
commitd2f7b0c64f99ddbd4e06e5aa106c72ac39bde179 (patch)
treea157ff5b918f5f994fecc76ab46373057662e870 /Source/kwsys
parentac432c7e7ceb86672aa2ee64a7b104d4ad48c464 (diff)
downloadCMake-d2f7b0c64f99ddbd4e06e5aa106c72ac39bde179.zip
CMake-d2f7b0c64f99ddbd4e06e5aa106c72ac39bde179.tar.gz
CMake-d2f7b0c64f99ddbd4e06e5aa106c72ac39bde179.tar.bz2
ENH: undo last change because it broke the dashboard
Diffstat (limited to 'Source/kwsys')
-rw-r--r--Source/kwsys/SystemTools.cxx89
1 files changed, 49 insertions, 40 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 8704bf9..bb81a19 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -1922,11 +1922,7 @@ kwsys_stl::string SystemTools::FindProgram(
{
return "";
}
- bool extensionIncluded = false;
kwsys_stl::string ext = SystemTools::GetExecutableExtension();
- std::string searchName = name;
- // check to see if the extension was included in the name
- // if not, add it
if(ext.size())
{
unsigned int len = strlen(name);
@@ -1934,71 +1930,84 @@ kwsys_stl::string SystemTools::FindProgram(
{
if(strcmp(name+(len-ext.size()), ext.c_str()) == 0)
{
- extensionIncluded = true;
- }
- else
- {
- searchName += ext;
+ ext = ""; // name already has Executable extension
}
}
- else
- {
- searchName += ext;
- }
}
- // searchName now has the extension in it.
-
- // See if the executable exists as written
- if(SystemTools::FileExists(searchName.c_str()) &&
- !SystemTools::FileIsDirectory(searchName.c_str()))
+ // See if the executable exists as written.
+ if(SystemTools::FileExists(name) &&
+ !SystemTools::FileIsDirectory(name))
+ {
+ return SystemTools::CollapseFullPath(name);
+ }
+ if(ext.size())
{
- return SystemTools::CollapseFullPath(searchName.c_str());
+ kwsys_stl::string tryPath = name;
+ tryPath += ext;
+ if(SystemTools::FileExists(tryPath.c_str()) &&
+ !SystemTools::FileIsDirectory(tryPath.c_str()))
+ {
+ return SystemTools::CollapseFullPath(tryPath.c_str());
+ }
}
kwsys_stl::vector<kwsys_stl::string> path;
- // Add the system search path to our path if asked for
+ // Add the system search path to our path.
if (!no_system_path)
{
SystemTools::GetPath(path);
}
+
// now add the additional paths
- for(kwsys_stl::vector<kwsys_stl::string>::const_iterator i =
- userPaths.begin(); i != userPaths.end(); ++i)
+ for(kwsys_stl::vector<kwsys_stl::string>::const_iterator i = userPaths.begin();
+ i != userPaths.end(); ++i)
{
path.push_back(*i);
}
- kwsys_stl::string tryPath;
- // now search the paths specified
for(kwsys_stl::vector<kwsys_stl::string>::iterator p = path.begin();
p != path.end(); ++p)
{
#ifdef _WIN32
// Remove double quotes from the path on windows
SystemTools::ReplaceString(*p, "\"", "");
- // if the extension was not specified then look
- // for .com before the ext version
- if(!extensionIncluded)
+#endif
+ kwsys_stl::string tryPath = *p;
+ tryPath += "/";
+ tryPath += name;
+ if(SystemTools::FileExists(tryPath.c_str()) &&
+ !SystemTools::FileIsDirectory(tryPath.c_str()))
+ {
+ return SystemTools::CollapseFullPath(tryPath.c_str());
+ }
+#ifdef _WIN32
+ // on windows try .com before .exe
+ if(ext.size() == 0)
{
- // first try .com instead .exe
- kwsys_stl::string tryPath = *p;
- tryPath += "/";
- tryPath += searchName;
SystemTools::ReplaceString(tryPath, ".exe", ".com");
SystemTools::ReplaceString(tryPath, ".EXE", ".com");
+ }
+ else
+ {
+ tryPath += ".com";
+ }
+ if(SystemTools::FileExists(tryPath.c_str()) &&
+ !SystemTools::FileIsDirectory(tryPath.c_str()))
+ {
+ return SystemTools::CollapseFullPath(tryPath.c_str());
+ }
+#endif
+ // now try to add ext if it is different than name
+ if(ext.size())
+ {
+ tryPath = *p;
+ tryPath += "/";
+ tryPath += name;
+ tryPath += ext;
if(SystemTools::FileExists(tryPath.c_str()) &&
!SystemTools::FileIsDirectory(tryPath.c_str()))
{
return SystemTools::CollapseFullPath(tryPath.c_str());
}
}
-#endif
- tryPath = *p;
- tryPath += "/";
- tryPath += searchName;
- if(SystemTools::FileExists(tryPath.c_str()) &&
- !SystemTools::FileIsDirectory(tryPath.c_str()))
- {
- return SystemTools::CollapseFullPath(tryPath.c_str());
- }
}
// Couldn't find the program.