diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | configure.ac | 8 | ||||
-rw-r--r-- | src/playlist/soundcloud_playlist_plugin.c | 26 |
3 files changed, 27 insertions, 8 deletions
diff --git a/Makefile.am b/Makefile.am index fdb925a8d..c7b110354 100644 --- a/Makefile.am +++ b/Makefile.am @@ -889,6 +889,7 @@ libplaylist_plugins_a_SOURCES = \ src/playlist/embcue_playlist_plugin.h \ src/playlist_list.c libplaylist_plugins_a_CPPFLAGS = $(AM_CPPFLAGS) \ + $(YAJL_CFLAGS) \ $(patsubst -I%/FLAC,-I%,$(FLAC_CFLAGS)) PLAYLIST_LIBS = \ diff --git a/configure.ac b/configure.ac index ba2b35f69..a84d6f698 100644 --- a/configure.ac +++ b/configure.ac @@ -709,9 +709,11 @@ AM_CONDITIONAL(ENABLE_DESPOTIFY, test x$enable_despotify = xyes) dnl --------------------------------- Soundcloud ------------------------------ if test x$enable_soundcloud != xno; then - AC_CHECK_LIB([yajl], [yajl_alloc], - [found_soundcloud=yes YAJL_LIBS=-lyajl], - [found_soundcloud=no]) + PKG_CHECK_MODULES([YAJL], [yajl >= 2.0], + [found_soundcloud=yes], + AC_CHECK_LIB([yajl], [yajl_alloc], + [found_soundcloud=yes YAJL_CFLAGS=-DHAVE_YAJL1 YAJL_LIBS=-lyajl], + [found_soundcloud=no])) fi MPD_AUTO_RESULT([soundcloud], [soundcloud.com support], [libyajl not found]) if test x$enable_soundcloud = xyes; then diff --git a/src/playlist/soundcloud_playlist_plugin.c b/src/playlist/soundcloud_playlist_plugin.c index ddaf4e96b..30d486e67 100644 --- a/src/playlist/soundcloud_playlist_plugin.c +++ b/src/playlist/soundcloud_playlist_plugin.c @@ -110,7 +110,12 @@ struct parse_data { GSList* songs; }; -static int handle_integer(void *ctx, long intval) +static int handle_integer(void *ctx, + long +#ifndef HAVE_YAJL1 + long +#endif + intval) { struct parse_data *data = (struct parse_data *) ctx; @@ -269,13 +274,20 @@ soundcloud_parse_json(const char *url, yajl_handle hand, GMutex* mutex, GCond* c } } - if (done) + if (done) { +#ifdef HAVE_YAJL1 stat = yajl_parse_complete(hand); - else +#else + stat = yajl_complete_parse(hand); +#endif + } else stat = yajl_parse(hand, ubuffer, nbytes); - if (stat != yajl_status_ok && - stat != yajl_status_insufficient_data) + if (stat != yajl_status_ok +#ifdef HAVE_YAJL1 + && stat != yajl_status_insufficient_data +#endif + ) { unsigned char *str = yajl_get_error(hand, 1, ubuffer, nbytes); g_warning("%s", str); @@ -356,7 +368,11 @@ soundcloud_open_uri(const char *uri, GMutex *mutex, GCond *cond) data.songs = NULL; data.title = NULL; data.stream_url = NULL; +#ifdef HAVE_YAJL1 hand = yajl_alloc(&parse_callbacks, NULL, NULL, (void *) &data); +#else + hand = yajl_alloc(&parse_callbacks, NULL, (void *) &data); +#endif int ret = soundcloud_parse_json(u, hand, mutex, cond); |