playlist/soundcloud: support libyajl2
[mk: backwars compatibility and autoconf check]
This commit is contained in:
		
				
					committed by
					
						
						Max Kellermann
					
				
			
			
				
	
			
			
			
						parent
						
							d5be3cce9c
						
					
				
				
					commit
					281b8714ef
				
			@@ -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
 | 
			
		||||
	PKG_CHECK_MODULES([YAJL], [yajl >= 2.0],
 | 
			
		||||
		[found_soundcloud=yes],
 | 
			
		||||
		AC_CHECK_LIB([yajl], [yajl_alloc],
 | 
			
		||||
		[found_soundcloud=yes YAJL_LIBS=-lyajl],
 | 
			
		||||
		[found_soundcloud=no])
 | 
			
		||||
			[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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user