diff options
author | Max Kellermann <max@musicpd.org> | 2020-03-13 19:37:59 +0100 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2020-03-13 20:01:10 +0100 |
commit | 45b60b3d38d80dc8995dfff463ab33e6bfbace3e (patch) | |
tree | ea9620ba4a2687adc5720a004e9ed178b101aa33 | |
parent | cefc773992bcb87feb2874ea4b7a94ba8117ba44 (diff) |
fs/Traits: GetParent() returns std::string_view
-rw-r--r-- | src/command/FileCommands.cxx | 6 | ||||
-rw-r--r-- | src/fs/Traits.cxx | 8 | ||||
-rw-r--r-- | src/fs/Traits.hxx | 4 | ||||
-rw-r--r-- | src/playlist/PlaylistQueue.cxx | 6 | ||||
-rw-r--r-- | src/playlist/Print.cxx | 6 |
5 files changed, 15 insertions, 15 deletions
diff --git a/src/command/FileCommands.cxx b/src/command/FileCommands.cxx index 493b794d0..d8be0da4a 100644 --- a/src/command/FileCommands.cxx +++ b/src/command/FileCommands.cxx @@ -169,7 +169,7 @@ handle_read_comments(Client &client, Request args, Response &r) * opened file or #nullptr on failure. */ static InputStreamPtr -find_stream_art(const char *directory, Mutex &mutex) +find_stream_art(std::string_view directory, Mutex &mutex) { static constexpr char const * art_names[] = { "cover.png", @@ -195,11 +195,11 @@ find_stream_art(const char *directory, Mutex &mutex) static CommandResult read_stream_art(Response &r, const char *uri, size_t offset) { - std::string art_directory = PathTraitsUTF8::GetParent(uri); + const auto art_directory = PathTraitsUTF8::GetParent(uri); Mutex mutex; - InputStreamPtr is = find_stream_art(art_directory.c_str(), mutex); + InputStreamPtr is = find_stream_art(art_directory, mutex); if (is == nullptr) { r.Error(ACK_ERROR_NO_EXIST, "No file exists"); diff --git a/src/fs/Traits.cxx b/src/fs/Traits.cxx index 555e6d72d..f31bcf7c1 100644 --- a/src/fs/Traits.cxx +++ b/src/fs/Traits.cxx @@ -64,7 +64,7 @@ GetBasePathImpl(typename Traits::const_pointer p) noexcept } template<typename Traits> -typename Traits::string +typename Traits::string_view GetParentPathImpl(typename Traits::const_pointer p) noexcept { #if !CLANG_CHECK_VERSION(3,6) @@ -81,7 +81,7 @@ GetParentPathImpl(typename Traits::const_pointer p) noexcept if (Traits::IsDrive(p) && sep == p + 2) return {p, 3u}; #endif - return {p, sep}; + return {p, size_t(sep - p)}; } template<typename Traits> @@ -130,7 +130,7 @@ PathTraitsFS::GetBase(PathTraitsFS::const_pointer p) noexcept return GetBasePathImpl<PathTraitsFS>(p); } -PathTraitsFS::string +PathTraitsFS::string_view PathTraitsFS::GetParent(PathTraitsFS::const_pointer p) noexcept { return GetParentPathImpl<PathTraitsFS>(p); @@ -168,7 +168,7 @@ PathTraitsUTF8::GetBase(const_pointer p) noexcept return GetBasePathImpl<PathTraitsUTF8>(p); } -PathTraitsUTF8::string +PathTraitsUTF8::string_view PathTraitsUTF8::GetParent(const_pointer p) noexcept { return GetParentPathImpl<PathTraitsUTF8>(p); diff --git a/src/fs/Traits.hxx b/src/fs/Traits.hxx index c604110bc..4e8f105a1 100644 --- a/src/fs/Traits.hxx +++ b/src/fs/Traits.hxx @@ -138,7 +138,7 @@ struct PathTraitsFS { * separator in the given input string. */ gcc_pure gcc_nonnull_all - static string GetParent(const_pointer p) noexcept; + static string_view GetParent(const_pointer p) noexcept; /** * Determine the relative part of the given path to this @@ -247,7 +247,7 @@ struct PathTraitsUTF8 { * separator in the given input string. */ gcc_pure gcc_nonnull_all - static string GetParent(const_pointer p) noexcept; + static string_view GetParent(const_pointer p) noexcept; /** * Determine the relative part of the given path to this diff --git a/src/playlist/PlaylistQueue.cxx b/src/playlist/PlaylistQueue.cxx index fd7f4481a..4e6b3ae3c 100644 --- a/src/playlist/PlaylistQueue.cxx +++ b/src/playlist/PlaylistQueue.cxx @@ -41,9 +41,9 @@ playlist_load_into_queue(const char *uri, SongEnumerator &e, playlist &dest, PlayerControl &pc, const SongLoader &loader) { - const std::string base_uri = uri != nullptr + const auto base_uri = uri != nullptr ? PathTraitsUTF8::GetParent(uri) - : std::string("."); + : "."; std::unique_ptr<DetachedSong> song; for (unsigned i = 0; @@ -54,7 +54,7 @@ playlist_load_into_queue(const char *uri, SongEnumerator &e, continue; } - if (!playlist_check_translate_song(*song, base_uri.c_str(), + if (!playlist_check_translate_song(*song, base_uri, loader)) { continue; } diff --git a/src/playlist/Print.cxx b/src/playlist/Print.cxx index 5fece2874..2511611e2 100644 --- a/src/playlist/Print.cxx +++ b/src/playlist/Print.cxx @@ -36,13 +36,13 @@ playlist_provider_print(Response &r, const char *uri, SongEnumerator &e, bool detail) noexcept { - const std::string base_uri = uri != nullptr + const auto base_uri = uri != nullptr ? PathTraitsUTF8::GetParent(uri) - : std::string("."); + : "."; std::unique_ptr<DetachedSong> song; while ((song = e.NextSong()) != nullptr) { - if (playlist_check_translate_song(*song, base_uri.c_str(), + if (playlist_check_translate_song(*song, base_uri, loader) && detail) song_print_info(r, *song); |