|
|
@@ -2813,20 +2813,36 @@ void SystemTools::SplitPath(const char* p,
|
|
|
kwsys_stl::string
|
|
|
SystemTools::JoinPath(const kwsys_stl::vector<kwsys_stl::string>& components)
|
|
|
{
|
|
|
+ return SystemTools::JoinPath(components.begin(), components.end());
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+kwsys_stl::string
|
|
|
+SystemTools
|
|
|
+::JoinPath(kwsys_stl::vector<kwsys_stl::string>::const_iterator first,
|
|
|
+ kwsys_stl::vector<kwsys_stl::string>::const_iterator last)
|
|
|
+{
|
|
|
+ // Construct result in a single string.
|
|
|
kwsys_stl::string result;
|
|
|
- if(components.size() > 0)
|
|
|
+
|
|
|
+ // The first two components do not add a slash.
|
|
|
+ if(first != last)
|
|
|
{
|
|
|
- result += components[0];
|
|
|
+ result += *first++;
|
|
|
}
|
|
|
- if(components.size() > 1)
|
|
|
+ if(first != last)
|
|
|
{
|
|
|
- result += components[1];
|
|
|
+ result += *first++;
|
|
|
}
|
|
|
- for(unsigned int i=2; i < components.size(); ++i)
|
|
|
+
|
|
|
+ // All remaining components are always separated with a slash.
|
|
|
+ while(first != last)
|
|
|
{
|
|
|
result += "/";
|
|
|
- result += components[i];
|
|
|
+ result += *first++;
|
|
|
}
|
|
|
+
|
|
|
+ // Return the concatenated result.
|
|
|
return result;
|
|
|
}
|
|
|
|