Commit 281b8714 authored by Robert Vollmert's avatar Robert Vollmert Committed by Max Kellermann

playlist/soundcloud: support libyajl2

[mk: backwars compatibility and autoconf check]
parent d5be3cce
......@@ -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 = \
......
......@@ -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
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment