ENH: SplitPath now supports slashes in both directions in the input path but still produces forward slashes in the root component.

This commit is contained in:
Brad King 2005-03-29 08:09:47 -05:00
parent 571929e86c
commit c7a2c80c17
2 changed files with 4 additions and 5 deletions

View File

@ -2240,7 +2240,7 @@ void SystemTools::SplitPath(const char* p,
components.clear(); components.clear();
// Identify the root component. // Identify the root component.
const char* c = p; const char* c = p;
if(c[0] == '/' && c[1] == '/') if((c[0] == '/' && c[1] == '/') || (c[0] == '\\' && c[1] == '\\'))
{ {
// Network path. // Network path.
components.push_back("//"); components.push_back("//");
@ -2252,7 +2252,7 @@ void SystemTools::SplitPath(const char* p,
components.push_back("/"); components.push_back("/");
c += 1; c += 1;
} }
else if(c[0] && c[1] == ':' && c[2] == '/') else if(c[0] && c[1] == ':' && (c[2] == '/' || c[2] == '\\'))
{ {
// Windows path. // Windows path.
kwsys_stl::string root = "_:/"; kwsys_stl::string root = "_:/";
@ -2279,7 +2279,7 @@ void SystemTools::SplitPath(const char* p,
const char* last = first; const char* last = first;
for(;*last; ++last) for(;*last; ++last)
{ {
if(*last == '/') if(*last == '/' || *last == '\\')
{ {
// End of a component. Save it. // End of a component. Save it.
components.push_back(kwsys_stl::string(first, last-first)); components.push_back(kwsys_stl::string(first, last-first));

View File

@ -292,8 +292,7 @@ public:
* The remaining components form the path. If there is a trailing * The remaining components form the path. If there is a trailing
* slash then the last component is the empty string. The * slash then the last component is the empty string. The
* components can be recombined as "c[0]c[1]/c[2]/.../c[n]" to * components can be recombined as "c[0]c[1]/c[2]/.../c[n]" to
* produce the original path. The input is assumed to be formatted * produce the original path.
* with forward slashes.
*/ */
static void SplitPath(const char* p, static void SplitPath(const char* p,
kwsys_stl::vector<kwsys_stl::string>& components); kwsys_stl::vector<kwsys_stl::string>& components);