Commit 7e66f341 authored by Max Kellermann's avatar Max Kellermann

playlist_list: added function playlist_list_open_path()

Added an interface for loading playlists from a local file.
parent f3203b5d
......@@ -204,3 +204,39 @@ playlist_list_open_stream(struct input_stream *is, const char *uri)
return NULL;
}
static bool
playlist_suffix_supported(const char *suffix)
{
assert(suffix != NULL);
for (unsigned i = 0; playlist_plugins[i] != NULL; ++i) {
const struct playlist_plugin *plugin = playlist_plugins[i];
if (playlist_plugins_enabled[i] &&
stringFoundInStringArray(plugin->suffixes, suffix))
return true;
}
return false;
}
struct playlist_provider *
playlist_list_open_path(struct input_stream *is, const char *path_fs)
{
const char *suffix;
struct playlist_provider *playlist;
assert(path_fs != NULL);
suffix = uri_get_suffix(path_fs);
if (suffix == NULL || !playlist_suffix_supported(suffix) ||
!input_stream_open(is, path_fs))
return NULL;
playlist = playlist_list_open_stream_suffix(is, suffix);
if (playlist == NULL)
input_stream_close(is);
return playlist;
}
......@@ -51,4 +51,15 @@ playlist_list_open_uri(const char *uri);
struct playlist_provider *
playlist_list_open_stream(struct input_stream *is, const char *uri);
/**
* Opens a playlist from a local file.
*
* @param is an uninitialized #input_stream object (must be closed
* with input_stream_close() if this function succeeds)
* @param path_fs the path of the playlist file
* @return a playlist, or NULL on error
*/
struct playlist_provider *
playlist_list_open_path(struct input_stream *is, const char *path_fs);
#endif
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