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;
|
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 *
|
struct playlist_provider *
|
||||||
playlist_list_open_stream(struct input_stream *is, const char *uri);
|
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
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user