summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2020-03-13 19:37:59 +0100
committerMax Kellermann <max@musicpd.org>2020-03-13 20:01:10 +0100
commit45b60b3d38d80dc8995dfff463ab33e6bfbace3e (patch)
treeea9620ba4a2687adc5720a004e9ed178b101aa33
parentcefc773992bcb87feb2874ea4b7a94ba8117ba44 (diff)
fs/Traits: GetParent() returns std::string_view
-rw-r--r--src/command/FileCommands.cxx6
-rw-r--r--src/fs/Traits.cxx8
-rw-r--r--src/fs/Traits.hxx4
-rw-r--r--src/playlist/PlaylistQueue.cxx6
-rw-r--r--src/playlist/Print.cxx6
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);