playlist_list: added function playlist_list_open_path()
Added an interface for loading playlists from a local file.
This commit is contained in:
parent
f3203b5de5
commit
7e66f34154
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user