aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert-lists@gmx.net>2012-03-19 21:16:48 +0100
committerMax Kellermann <max@duempel.org>2012-03-19 21:16:48 +0100
commit281b8714efbf930a80eb3ab6056240ae0882aa22 (patch)
tree1d2c6168d55d1dd7afe3f0c899ef4ef22de4c2b6
parentd5be3cce9cb3f198c7b36ac09400e963555066c8 (diff)
downloadmpd-281b8714efbf930a80eb3ab6056240ae0882aa22.tar.gz
mpd-281b8714efbf930a80eb3ab6056240ae0882aa22.tar.xz
mpd-281b8714efbf930a80eb3ab6056240ae0882aa22.zip
playlist/soundcloud: support libyajl2
[mk: backwars compatibility and autoconf check]
-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 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);