diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-03-10 22:37:47 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-03-10 22:37:47 (GMT) |
commit | d2f7b0c64f99ddbd4e06e5aa106c72ac39bde179 (patch) | |
tree | a157ff5b918f5f994fecc76ab46373057662e870 /Source/kwsys | |
parent | ac432c7e7ceb86672aa2ee64a7b104d4ad48c464 (diff) | |
download | CMake-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.cxx | 89 |
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. |