summaryrefslogtreecommitdiff
path: root/src/frontend_common/config.cpp
diff options
context:
space:
mode:
authort895 <clombardo169@gmail.com>2023-11-19 12:24:43 -0500
committert895 <clombardo169@gmail.com>2023-11-21 01:58:13 -0500
commitf3fe362c93efff124c4ef0a005cdcd1cd635f8f5 (patch)
tree15f8bc2c39e262ced734497b54d349b5efaf60cb /src/frontend_common/config.cpp
parenteedecaef96637a783c8eeb8d625838f3bc2a121a (diff)
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.
Diffstat (limited to 'src/frontend_common/config.cpp')
-rw-r--r--src/frontend_common/config.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp
index 8eb62e8ef..b3f4a54a4 100644
--- a/src/frontend_common/config.cpp
+++ b/src/frontend_common/config.cpp
@@ -856,7 +856,15 @@ std::string Config::AdjustKey(const std::string& key) {
std::string Config::AdjustOutputString(const std::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, "//", "/");
+ adjusted_string.insert(0, "/");
+ } else {
+ boost::replace_all(adjusted_string, "//", "/");
+ }
// Needed for backwards compatibility with QSettings deserialization
for (const auto& special_character : special_characters) {