diff options
| author | 2020-04-09 18:48:28 +0100 | |
|---|---|---|
| committer | 2020-04-09 18:48:28 +0100 | |
| commit | f98a2c42dee1a3c20f4a4e876069a32982395f05 (patch) | |
| tree | 22172412be7f662a9f9a23b091b719d4aed22ed6 /src/common/file_util.cpp | |
| parent | Merge pull request #3601 from ReinUsesLisp/some-shader-encodings (diff) | |
| download | yuzu-f98a2c42dee1a3c20f4a4e876069a32982395f05.tar.gz yuzu-f98a2c42dee1a3c20f4a4e876069a32982395f05.tar.xz yuzu-f98a2c42dee1a3c20f4a4e876069a32982395f05.zip | |
common/file_util: Allow access to files on network shares
On Windows, network shares use paths like \\server\share\file which were
being broken by FileUtil::SanitizePath() removing double slashes.
Changed the code in SanitizePath to permit a double-backslash if it
occurs at the start of a filepath (on Windows only).
Diffstat (limited to '')
| -rw-r--r-- | src/common/file_util.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp index 35eee0096..28a16077d 100644 --- a/src/common/file_util.cpp +++ b/src/common/file_util.cpp | |||
| @@ -888,7 +888,14 @@ std::string SanitizePath(std::string_view path_, DirectorySeparator directory_se | |||
| 888 | } | 888 | } |
| 889 | 889 | ||
| 890 | std::replace(path.begin(), path.end(), type1, type2); | 890 | std::replace(path.begin(), path.end(), type1, type2); |
| 891 | path.erase(std::unique(path.begin(), path.end(), | 891 | |
| 892 | auto start = path.begin(); | ||
| 893 | #ifdef _WIN32 | ||
| 894 | // allow network paths which start with a double backslash (e.g. \\server\share) | ||
| 895 | if (start != path.end()) | ||
| 896 | ++start; | ||
| 897 | #endif | ||
| 898 | path.erase(std::unique(start, path.end(), | ||
| 892 | [type2](char c1, char c2) { return c1 == type2 && c2 == type2; }), | 899 | [type2](char c1, char c2) { return c1 == type2 && c2 == type2; }), |
| 893 | path.end()); | 900 | path.end()); |
| 894 | return std::string(RemoveTrailingSlash(path)); | 901 | return std::string(RemoveTrailingSlash(path)); |