fs/Traits: GetParent() returns std::string_view
This commit is contained in:
@@ -169,7 +169,7 @@ handle_read_comments(Client &client, Request args, Response &r)
|
|||||||
* opened file or #nullptr on failure.
|
* opened file or #nullptr on failure.
|
||||||
*/
|
*/
|
||||||
static InputStreamPtr
|
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[] = {
|
static constexpr char const * art_names[] = {
|
||||||
"cover.png",
|
"cover.png",
|
||||||
@@ -195,11 +195,11 @@ find_stream_art(const char *directory, Mutex &mutex)
|
|||||||
static CommandResult
|
static CommandResult
|
||||||
read_stream_art(Response &r, const char *uri, size_t offset)
|
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;
|
Mutex mutex;
|
||||||
|
|
||||||
InputStreamPtr is = find_stream_art(art_directory.c_str(), mutex);
|
InputStreamPtr is = find_stream_art(art_directory, mutex);
|
||||||
|
|
||||||
if (is == nullptr) {
|
if (is == nullptr) {
|
||||||
r.Error(ACK_ERROR_NO_EXIST, "No file exists");
|
r.Error(ACK_ERROR_NO_EXIST, "No file exists");
|
||||||
|
@@ -64,7 +64,7 @@ GetBasePathImpl(typename Traits::const_pointer p) noexcept
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename Traits>
|
template<typename Traits>
|
||||||
typename Traits::string
|
typename Traits::string_view
|
||||||
GetParentPathImpl(typename Traits::const_pointer p) noexcept
|
GetParentPathImpl(typename Traits::const_pointer p) noexcept
|
||||||
{
|
{
|
||||||
#if !CLANG_CHECK_VERSION(3,6)
|
#if !CLANG_CHECK_VERSION(3,6)
|
||||||
@@ -81,7 +81,7 @@ GetParentPathImpl(typename Traits::const_pointer p) noexcept
|
|||||||
if (Traits::IsDrive(p) && sep == p + 2)
|
if (Traits::IsDrive(p) && sep == p + 2)
|
||||||
return {p, 3u};
|
return {p, 3u};
|
||||||
#endif
|
#endif
|
||||||
return {p, sep};
|
return {p, size_t(sep - p)};
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Traits>
|
template<typename Traits>
|
||||||
@@ -130,7 +130,7 @@ PathTraitsFS::GetBase(PathTraitsFS::const_pointer p) noexcept
|
|||||||
return GetBasePathImpl<PathTraitsFS>(p);
|
return GetBasePathImpl<PathTraitsFS>(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
PathTraitsFS::string
|
PathTraitsFS::string_view
|
||||||
PathTraitsFS::GetParent(PathTraitsFS::const_pointer p) noexcept
|
PathTraitsFS::GetParent(PathTraitsFS::const_pointer p) noexcept
|
||||||
{
|
{
|
||||||
return GetParentPathImpl<PathTraitsFS>(p);
|
return GetParentPathImpl<PathTraitsFS>(p);
|
||||||
@@ -168,7 +168,7 @@ PathTraitsUTF8::GetBase(const_pointer p) noexcept
|
|||||||
return GetBasePathImpl<PathTraitsUTF8>(p);
|
return GetBasePathImpl<PathTraitsUTF8>(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
PathTraitsUTF8::string
|
PathTraitsUTF8::string_view
|
||||||
PathTraitsUTF8::GetParent(const_pointer p) noexcept
|
PathTraitsUTF8::GetParent(const_pointer p) noexcept
|
||||||
{
|
{
|
||||||
return GetParentPathImpl<PathTraitsUTF8>(p);
|
return GetParentPathImpl<PathTraitsUTF8>(p);
|
||||||
|
@@ -138,7 +138,7 @@ struct PathTraitsFS {
|
|||||||
* separator in the given input string.
|
* separator in the given input string.
|
||||||
*/
|
*/
|
||||||
gcc_pure gcc_nonnull_all
|
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
|
* Determine the relative part of the given path to this
|
||||||
@@ -247,7 +247,7 @@ struct PathTraitsUTF8 {
|
|||||||
* separator in the given input string.
|
* separator in the given input string.
|
||||||
*/
|
*/
|
||||||
gcc_pure gcc_nonnull_all
|
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
|
* Determine the relative part of the given path to this
|
||||||
|
@@ -41,9 +41,9 @@ playlist_load_into_queue(const char *uri, SongEnumerator &e,
|
|||||||
playlist &dest, PlayerControl &pc,
|
playlist &dest, PlayerControl &pc,
|
||||||
const SongLoader &loader)
|
const SongLoader &loader)
|
||||||
{
|
{
|
||||||
const std::string base_uri = uri != nullptr
|
const auto base_uri = uri != nullptr
|
||||||
? PathTraitsUTF8::GetParent(uri)
|
? PathTraitsUTF8::GetParent(uri)
|
||||||
: std::string(".");
|
: ".";
|
||||||
|
|
||||||
std::unique_ptr<DetachedSong> song;
|
std::unique_ptr<DetachedSong> song;
|
||||||
for (unsigned i = 0;
|
for (unsigned i = 0;
|
||||||
@@ -54,7 +54,7 @@ playlist_load_into_queue(const char *uri, SongEnumerator &e,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!playlist_check_translate_song(*song, base_uri.c_str(),
|
if (!playlist_check_translate_song(*song, base_uri,
|
||||||
loader)) {
|
loader)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -36,13 +36,13 @@ playlist_provider_print(Response &r,
|
|||||||
const char *uri,
|
const char *uri,
|
||||||
SongEnumerator &e, bool detail) noexcept
|
SongEnumerator &e, bool detail) noexcept
|
||||||
{
|
{
|
||||||
const std::string base_uri = uri != nullptr
|
const auto base_uri = uri != nullptr
|
||||||
? PathTraitsUTF8::GetParent(uri)
|
? PathTraitsUTF8::GetParent(uri)
|
||||||
: std::string(".");
|
: ".";
|
||||||
|
|
||||||
std::unique_ptr<DetachedSong> song;
|
std::unique_ptr<DetachedSong> song;
|
||||||
while ((song = e.NextSong()) != nullptr) {
|
while ((song = e.NextSong()) != nullptr) {
|
||||||
if (playlist_check_translate_song(*song, base_uri.c_str(),
|
if (playlist_check_translate_song(*song, base_uri,
|
||||||
loader) &&
|
loader) &&
|
||||||
detail)
|
detail)
|
||||||
song_print_info(r, *song);
|
song_print_info(r, *song);
|
||||||
|
Reference in New Issue
Block a user