aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/dump_playlist.c51
1 files changed, 30 insertions, 21 deletions
diff --git a/test/dump_playlist.c b/test/dump_playlist.c
index f789a2820..146f5862f 100644
--- a/test/dump_playlist.c
+++ b/test/dump_playlist.c
@@ -43,6 +43,7 @@ int main(int argc, char **argv)
{
const char *uri;
struct input_stream is;
+ bool stream_open = false;
bool success;
GError *error = NULL;
struct playlist_provider *playlist;
@@ -74,32 +75,39 @@ int main(int argc, char **argv)
input_stream_global_init();
playlist_list_global_init();
- /* open the stream and wait until it becomes ready */
+ /* open the playlist */
- success = input_stream_open(&is, uri);
- if (!success) {
- g_printerr("input_stream_open() failed\n");
- return 2;
- }
+ playlist = playlist_list_open_uri(uri);
+ if (playlist == NULL) {
+ /* open the stream and wait until it becomes ready */
- while (!is.ready) {
- int ret = input_stream_buffer(&is);
- if (ret < 0)
- /* error */
+ success = input_stream_open(&is, uri);
+ if (!success) {
+ g_printerr("input_stream_open() failed\n");
return 2;
+ }
- if (ret == 0)
- /* nothing was buffered - wait */
- g_usleep(10000);
- }
+ while (!is.ready) {
+ int ret = input_stream_buffer(&is);
+ if (ret < 0)
+ /* error */
+ return 2;
- /* open the playlist */
+ if (ret == 0)
+ /* nothing was buffered - wait */
+ g_usleep(10000);
+ }
- playlist = playlist_list_open_stream(&is, uri);
- if (playlist == NULL) {
- input_stream_close(&is);
- g_printerr("Failed to open playlist\n");
- return 2;
+ stream_open = true;
+
+ /* open the playlist */
+
+ playlist = playlist_list_open_stream(&is, uri);
+ if (playlist == NULL) {
+ input_stream_close(&is);
+ g_printerr("Failed to open playlist\n");
+ return 2;
+ }
}
/* dump the playlist */
@@ -115,7 +123,8 @@ int main(int argc, char **argv)
/* deinitialize everything */
playlist_plugin_close(playlist);
- input_stream_close(&is);
+ if (stream_open)
+ input_stream_close(&is);
playlist_list_global_finish();
input_stream_global_finish();
config_global_finish();