aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--configure.ac8
-rw-r--r--src/playlist/soundcloud_playlist_plugin.c26
3 files changed, 27 insertions, 8 deletions
diff --git a/Makefile.am b/Makefile.am
index fdb925a8..c7b11035 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 ba2b35f6..a84d6f69 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 ddaf4e96..30d486e6 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);