FileSystem: Backport 3-arg Path::Combine()

pull/3687/head
Stenzek 7 months ago
parent a57851fb0c
commit 322320f816
No known key found for this signature in database

@ -891,6 +891,28 @@ std::string Path::Combine(std::string_view base, std::string_view next)
return ret;
}
std::string Path::Combine(std::string_view base, std::string_view subdir, std::string_view next)
{
std::string ret;
ret.reserve(base.length() + subdir.length() + next.length() + 2);
PathAppendString(ret, base);
while (!ret.empty() && ret.back() == FS_OSPATH_SEPARATOR_CHARACTER)
ret.pop_back();
ret += FS_OSPATH_SEPARATOR_CHARACTER;
PathAppendString(ret, subdir);
while (!ret.empty() && ret.back() == FS_OSPATH_SEPARATOR_CHARACTER)
ret.pop_back();
ret += FS_OSPATH_SEPARATOR_CHARACTER;
PathAppendString(ret, next);
while (!ret.empty() && ret.back() == FS_OSPATH_SEPARATOR_CHARACTER)
ret.pop_back();
return ret;
}
std::FILE* FileSystem::OpenCFile(const char* path, const char* mode, Error* error)
{
#ifdef _WIN32

@ -27,6 +27,7 @@ std::string BuildRelativePath(std::string_view filename, std::string_view new_fi
/// Joins path components together, producing a new path.
std::string Combine(std::string_view base, std::string_view next);
std::string Combine(std::string_view base, std::string_view subdir, std::string_view next);
/// Removes all .. and . components from a path.
std::string Canonicalize(std::string_view path);

Loading…
Cancel
Save