diff options
| author | Dan Engelbrecht <[email protected]> | 2025-10-14 13:13:59 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-10-14 13:13:59 +0200 |
| commit | 9b7580230798d83d9bb36d40150913af69a13929 (patch) | |
| tree | 73552ec1d3e9d955ce391cad894c637b74be91d4 /src/zencore/filesystem.cpp | |
| parent | move all storage-related services into storage tree (#571) (diff) | |
| download | zen-9b7580230798d83d9bb36d40150913af69a13929.tar.xz zen-9b7580230798d83d9bb36d40150913af69a13929.zip | |
refactor builds cmd part2 (#572)
* fix metadata info in filebuildstorage GetBuild
* move MakeSafeAbsolutePathÃnPlace to filesystem.h/cpp
* add BuildsOperationUploadFolder op moving code from builds_cmd.cpp
Diffstat (limited to 'src/zencore/filesystem.cpp')
| -rw-r--r-- | src/zencore/filesystem.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/zencore/filesystem.cpp b/src/zencore/filesystem.cpp index 8c5040397..c7afe702c 100644 --- a/src/zencore/filesystem.cpp +++ b/src/zencore/filesystem.cpp @@ -3063,6 +3063,33 @@ SetFileReadOnly(const std::filesystem::path& Filename, bool ReadOnly) return Result; } +void +MakeSafeAbsolutePathÍnPlace(std::filesystem::path& Path) +{ + if (!Path.empty()) + { + std::filesystem::path AbsolutePath = std::filesystem::absolute(Path).make_preferred(); +#if ZEN_PLATFORM_WINDOWS + const std::string_view Prefix = "\\\\?\\"; + const std::u8string PrefixU8(Prefix.begin(), Prefix.end()); + std::u8string PathString = AbsolutePath.u8string(); + if (!PathString.empty() && !PathString.starts_with(PrefixU8)) + { + PathString.insert(0, PrefixU8); + Path = PathString; + } +#endif // ZEN_PLATFORM_WINDOWS + } +} + +std::filesystem::path +MakeSafeAbsolutePath(const std::filesystem::path& Path) +{ + std::filesystem::path Tmp(Path); + MakeSafeAbsolutePathÍnPlace(Tmp); + return Tmp; +} + class SharedMemoryImpl : public SharedMemory { public: |