frontend_common: Add special config case for unmapped windows network drives

Normally we save paths with '/' as the delimiter for each segment but when you manually select a network drive instead of using a mapped location, this would break. This ensures that if the read filesystem location starts with '//', we keep that pattern.
This commit is contained in:
t895 2023-11-19 12:24:43 -05:00
parent eedecaef96
commit f3fe362c93

View file

@ -856,7 +856,15 @@ std::string Config::AdjustKey(const std::string& key) {
std::string Config::AdjustOutputString(const std::string& string) { std::string Config::AdjustOutputString(const std::string& string) {
std::string adjusted_string(string); std::string adjusted_string(string);
boost::replace_all(adjusted_string, "\\", "/"); boost::replace_all(adjusted_string, "\\", "/");
// Windows requires that two forward slashes are used at the start of a path for unmapped
// network drives so we have to watch for that here
if (string.substr(0, 2) == "//") {
boost::replace_all(adjusted_string, "//", "/"); boost::replace_all(adjusted_string, "//", "/");
adjusted_string.insert(0, "/");
} else {
boost::replace_all(adjusted_string, "//", "/");
}
// Needed for backwards compatibility with QSettings deserialization // Needed for backwards compatibility with QSettings deserialization
for (const auto& special_character : special_characters) { for (const auto& special_character : special_characters) {