From c7b844ba3e03aee882a8b629885ca49ecc06c146 Mon Sep 17 00:00:00 2001 From: Brad King Date: Sun, 20 Jan 2008 17:24:46 -0500 Subject: [PATCH] BUG: Make sure search paths never have double-slashes. Leading with two slashes (//) on cygwin looks like a network path and delays while waiting for a non-existent machine. --- Source/cmFindPathCommand.cxx | 14 ++++++++--- Source/kwsys/SystemTools.cxx | 45 ++++++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index f322b43f4..53531dde3 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -101,6 +101,16 @@ bool cmFindPathCommand::InitialPass(std::vector const& argsIn) supportFrameworks = false; } std::string framework; + // Add a trailing slash to all paths to aid the search process. + for(std::vector::iterator i = this->SearchPaths.begin(); + i != this->SearchPaths.end(); ++i) + { + std::string& p = *i; + if(p[p.size()-1] != '/') + { + p += "/"; + } + } // Use the search path to find the file. unsigned int k; std::string result; @@ -122,7 +132,6 @@ bool cmFindPathCommand::InitialPass(std::vector const& argsIn) if(result.size() == 0) { tryPath = this->SearchPaths[k]; - tryPath += "/"; tryPath += this->Names[j]; if(cmSystemTools::FileExists(tryPath.c_str())) { @@ -181,7 +190,6 @@ std::string cmFindPathCommand::FindHeaderInFramework(std::string& file, if(frameWorkName.size()) { std::string fpath = dir; - fpath += "/"; fpath += frameWorkName; fpath += ".framework"; std::string intPath = fpath; @@ -200,7 +208,7 @@ std::string cmFindPathCommand::FindHeaderInFramework(std::string& file, // if it is not found yet or not a framework header, then do a glob search // for all files in dir/*/Headers/ cmStdString glob = dir; - glob += "/*/Headers/"; + glob += "*/Headers/"; glob += file; cmsys::Glob globIt; globIt.FindFiles(glob); diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 5c81ae4ad..de0001971 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -2112,13 +2112,22 @@ kwsys_stl::string SystemTools { path.push_back(*i); } + // Add a trailing slash to all paths to aid the search process. + for(kwsys_stl::vector::iterator i = path.begin(); + i != path.end(); ++i) + { + kwsys_stl::string& p = *i; + if(p[p.size()-1] != '/') + { + p += "/"; + } + } // now look for the file kwsys_stl::string tryPath; for(kwsys_stl::vector::const_iterator p = path.begin(); p != path.end(); ++p) { tryPath = *p; - tryPath += "/"; tryPath += name; if(SystemTools::FileExists(tryPath.c_str())) { @@ -2235,6 +2244,16 @@ kwsys_stl::string SystemTools::FindProgram( { path.push_back(*i); } + // Add a trailing slash to all paths to aid the search process. + for(kwsys_stl::vector::iterator i = path.begin(); + i != path.end(); ++i) + { + kwsys_stl::string& p = *i; + if(p[p.size()-1] != '/') + { + p += "/"; + } + } // Try each path for(kwsys_stl::vector::iterator p = path.begin(); p != path.end(); ++p) @@ -2250,7 +2269,6 @@ kwsys_stl::string SystemTools::FindProgram( = extensions.begin(); ext != extensions.end(); ++ext) { tryPath = *p; - tryPath += "/"; tryPath += name; tryPath += *ext; if(SystemTools::FileExists(tryPath.c_str()) && @@ -2262,7 +2280,6 @@ kwsys_stl::string SystemTools::FindProgram( } // now try it without them tryPath = *p; - tryPath += "/"; tryPath += name; if(SystemTools::FileExists(tryPath.c_str()) && !SystemTools::FileIsDirectory(tryPath.c_str())) @@ -2319,13 +2336,22 @@ kwsys_stl::string SystemTools { path.push_back(*i); } + // Add a trailing slash to all paths to aid the search process. + for(kwsys_stl::vector::iterator i = path.begin(); + i != path.end(); ++i) + { + kwsys_stl::string& p = *i; + if(p[p.size()-1] != '/') + { + p += "/"; + } + } kwsys_stl::string tryPath; for(kwsys_stl::vector::const_iterator p = path.begin(); p != path.end(); ++p) { #if defined(__APPLE__) tryPath = *p; - tryPath += "/"; tryPath += name; tryPath += ".framework"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2336,7 +2362,6 @@ kwsys_stl::string SystemTools #endif #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) tryPath = *p; - tryPath += "/"; tryPath += name; tryPath += ".lib"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2346,7 +2371,7 @@ kwsys_stl::string SystemTools } #else tryPath = *p; - tryPath += "/lib"; + tryPath += "lib"; tryPath += name; tryPath += ".so"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2355,7 +2380,7 @@ kwsys_stl::string SystemTools return SystemTools::CollapseFullPath(tryPath.c_str()); } tryPath = *p; - tryPath += "/lib"; + tryPath += "lib"; tryPath += name; tryPath += ".a"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2364,7 +2389,7 @@ kwsys_stl::string SystemTools return SystemTools::CollapseFullPath(tryPath.c_str()); } tryPath = *p; - tryPath += "/lib"; + tryPath += "lib"; tryPath += name; tryPath += ".sl"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2373,7 +2398,7 @@ kwsys_stl::string SystemTools return SystemTools::CollapseFullPath(tryPath.c_str()); } tryPath = *p; - tryPath += "/lib"; + tryPath += "lib"; tryPath += name; tryPath += ".dylib"; if(SystemTools::FileExists(tryPath.c_str()) @@ -2382,7 +2407,7 @@ kwsys_stl::string SystemTools return SystemTools::CollapseFullPath(tryPath.c_str()); } tryPath = *p; - tryPath += "/lib"; + tryPath += "lib"; tryPath += name; tryPath += ".dll"; if(SystemTools::FileExists(tryPath.c_str())