From 53ac77f237511431272af8b40d14695cc3228c9c Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 20 Oct 2024 22:21:34 +0200 Subject: [PATCH] refactor(metadata_types): make ::unix_path() less Windows specific --- src/reader/internal/metadata_types.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/reader/internal/metadata_types.cpp b/src/reader/internal/metadata_types.cpp index 259e9c002..2bcb743a3 100644 --- a/src/reader/internal/metadata_types.cpp +++ b/src/reader/internal/metadata_types.cpp @@ -990,19 +990,18 @@ dir_entry_view_impl::name(uint32_t index, global_metadata const& g) { } std::string dir_entry_view_impl::path() const { + // paths in metadata are guaranteed to be valid UTF-8 return u8string_to_string(fs_path().u8string()); } std::string dir_entry_view_impl::unix_path() const { -#ifdef _WIN32 - auto p = fs_path().u8string(); - std::replace(p.begin(), p.end(), - static_cast(std::filesystem::path::preferred_separator), - '/'); - return u8string_to_string(p); -#else - return path(); -#endif + static constexpr char preferred = + static_cast(std::filesystem::path::preferred_separator); + auto p = path(); + if constexpr (preferred != '/') { + std::replace(p.begin(), p.end(), preferred, '/'); + } + return p; } std::wstring dir_entry_view_impl::wpath() const { return fs_path().wstring(); }