|
|
@@ -884,11 +884,21 @@ std::string_view RemoveTrailingSlash(std::string_view path) {
|
|
|
return path;
|
|
|
}
|
|
|
|
|
|
-std::string SanitizePath(std::string_view path_) {
|
|
|
+std::string SanitizePath(std::string_view path_, bool with_platform_slashes) {
|
|
|
std::string path(path_);
|
|
|
- std::replace(path.begin(), path.end(), '\\', '/');
|
|
|
+ char type1 = '\\';
|
|
|
+ char type2 = '/';
|
|
|
+
|
|
|
+ if (with_platform_slashes) {
|
|
|
+#ifdef _WIN32
|
|
|
+ type1 = '/';
|
|
|
+ type2 = '\\';
|
|
|
+#endif
|
|
|
+ }
|
|
|
+
|
|
|
+ std::replace(path.begin(), path.end(), type1, type2);
|
|
|
path.erase(std::unique(path.begin(), path.end(),
|
|
|
- [](char c1, char c2) { return c1 == '/' && c2 == '/'; }),
|
|
|
+ [type2](char c1, char c2) { return c1 == type2 && c2 == type2; }),
|
|
|
path.end());
|
|
|
return std::string(RemoveTrailingSlash(path));
|
|
|
}
|