diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index 68e091baa0..41e09f057c 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -273,6 +273,10 @@ bool cmFindBase::ParseArguments(std::vector const& argsIn) // Handle search root stuff. this->RerootPaths(this->SearchPaths); + + // Add a trailing slash to all prefixes to aid the search process. + this->AddTrailingSlashes(this->SearchPaths); + return true; } diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx index a82e6115ed..d69fdce2e8 100644 --- a/Source/cmFindCommon.cxx +++ b/Source/cmFindCommon.cxx @@ -417,3 +417,18 @@ void cmFindCommon::AddPathInternal(std::string const& in_path, this->SearchPaths.push_back(fullPath.c_str()); } } + +//---------------------------------------------------------------------------- +void cmFindCommon::AddTrailingSlashes(std::vector& paths) +{ + // Add a trailing slash to all paths to aid the search process. + for(std::vector::iterator i = paths.begin(); + i != paths.end(); ++i) + { + std::string& p = *i; + if(!p.empty() && p[p.size()-1] != '/') + { + p += "/"; + } + } +} diff --git a/Source/cmFindCommon.h b/Source/cmFindCommon.h index e141a08eaf..a316b33876 100644 --- a/Source/cmFindCommon.h +++ b/Source/cmFindCommon.h @@ -44,6 +44,9 @@ protected: /** Place a set of search paths under the search roots. */ void RerootPaths(std::vector& paths); + /** Add trailing slashes to all search paths. */ + void AddTrailingSlashes(std::vector& paths); + /** Compute the current default root path mode. */ void SelectDefaultRootPathMode(); diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index ab61401760..2bf54b13d0 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -252,16 +252,6 @@ std::string cmFindLibraryCommand::FindLibrary(const char* name) } } - // 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.empty() || p[p.size()-1] != '/') - { - p += "/"; - } - } std::string tryPath; for(std::vector::const_iterator p = this->SearchPaths.begin(); p != this->SearchPaths.end(); ++p) diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 5cc1724233..426d3df09c 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -1067,15 +1067,7 @@ void cmFindPackageCommand::ComputeFinalPrefixes() this->RerootPaths(prefixes); // Add a trailing slash to all prefixes to aid the search process. - for(std::vector::iterator i = prefixes.begin(); - i != prefixes.end(); ++i) - { - std::string& prefix = *i; - if(prefix[prefix.size()-1] != '/') - { - prefix += "/"; - } - } + this->AddTrailingSlashes(prefixes); } //---------------------------------------------------------------------------- diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index c04594ac6b..e22b122006 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -102,16 +102,6 @@ bool cmFindPathCommand 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.empty() || p[p.size()-1] != '/') - { - p += "/"; - } - } // Use the search path to find the file. unsigned int k; std::string result;