diff --git a/SystemTools.cxx b/SystemTools.cxx index 9cd5c8e59bc19b90fc89d75b4708d795de535c9a..209121cdefc5c0a1d19f3fb764b39d10d3fca9d9 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -2240,7 +2240,7 @@ void SystemTools::SplitPath(const char* p, components.clear(); // Identify the root component. const char* c = p; - if(c[0] == '/' && c[1] == '/') + if((c[0] == '/' && c[1] == '/') || (c[0] == '\\' && c[1] == '\\')) { // Network path. components.push_back("//"); @@ -2252,7 +2252,7 @@ void SystemTools::SplitPath(const char* p, components.push_back("/"); c += 1; } - else if(c[0] && c[1] == ':' && c[2] == '/') + else if(c[0] && c[1] == ':' && (c[2] == '/' || c[2] == '\\')) { // Windows path. kwsys_stl::string root = "_:/"; @@ -2279,7 +2279,7 @@ void SystemTools::SplitPath(const char* p, const char* last = first; for(;*last; ++last) { - if(*last == '/') + if(*last == '/' || *last == '\\') { // End of a component. Save it. components.push_back(kwsys_stl::string(first, last-first)); diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in index 3fae5a39e3a793baec6498ae41ba169441339d58..cbb07080dc96e4c44c2bc977e3d8c70ba894d5dd 100644 --- a/SystemTools.hxx.in +++ b/SystemTools.hxx.in @@ -292,8 +292,7 @@ public: * The remaining components form the path. If there is a trailing * slash then the last component is the empty string. The * 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 - * with forward slashes. + * produce the original path. */ static void SplitPath(const char* p, kwsys_stl::vector<kwsys_stl::string>& components);