From 7e66f341544488c839c05e5c1589c8b8ca959334 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 6 Nov 2009 01:07:39 +0100 Subject: playlist_list: added function playlist_list_open_path() Added an interface for loading playlists from a local file. --- src/playlist_list.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/playlist_list.c') diff --git a/src/playlist_list.c b/src/playlist_list.c index 9b2395ad4..b5df72ed8 100644 --- a/src/playlist_list.c +++ b/src/playlist_list.c @@ -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; +} -- cgit v1.2.3