Commit cf38505d authored by Max Kellermann's avatar Max Kellermann

playlist_queue: load playlists from music directory

Try the playlist directory first, and if that file does not exist, try the same relative path within the music directory.
parent af964e89
...@@ -122,6 +122,9 @@ playlist_open_path_into_queue(const char *path_fs, struct playlist *dest) ...@@ -122,6 +122,9 @@ playlist_open_path_into_queue(const char *path_fs, struct playlist *dest)
return result; return result;
} }
/**
* Load a playlist from the configured playlist directory.
*/
static enum playlist_result static enum playlist_result
playlist_open_local_into_queue(const char *uri, struct playlist *dest) playlist_open_local_into_queue(const char *uri, struct playlist *dest)
{ {
...@@ -142,13 +145,42 @@ playlist_open_local_into_queue(const char *uri, struct playlist *dest) ...@@ -142,13 +145,42 @@ playlist_open_local_into_queue(const char *uri, struct playlist *dest)
return result; return result;
} }
/**
* Load a playlist from the configured music directory.
*/
static enum playlist_result
playlist_open_local_into_queue2(const char *uri, struct playlist *dest)
{
char *path_fs;
enum playlist_result result;
assert(uri_safe_local(uri));
path_fs = map_uri_fs(uri);
if (path_fs == NULL)
return PLAYLIST_RESULT_NO_SUCH_LIST;
result = playlist_open_path_into_queue(path_fs, dest);
g_free(path_fs);
return result;
}
enum playlist_result enum playlist_result
playlist_open_into_queue(const char *uri, struct playlist *dest) playlist_open_into_queue(const char *uri, struct playlist *dest)
{ {
if (uri_has_scheme(uri)) if (uri_has_scheme(uri))
return playlist_open_remote_into_queue(uri, dest); return playlist_open_remote_into_queue(uri, dest);
else if (spl_valid_name(uri))
return playlist_open_local_into_queue(uri, dest); if (spl_valid_name(uri)) {
else enum playlist_result result =
return PLAYLIST_RESULT_NO_SUCH_LIST; playlist_open_local_into_queue(uri, dest);
if (result != PLAYLIST_RESULT_NO_SUCH_LIST)
return result;
}
if (uri_safe_local(uri))
return playlist_open_local_into_queue2(uri, dest);
return PLAYLIST_RESULT_NO_SUCH_LIST;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment