In case this wasn't clear, I have the package ready locally and could upload any minute, but wouldn't want to do so if you're not going to allow it. I'm also attaching a debdiff, if that makes any difference.
Florian
diff -Nru mpd-0.19.1/aclocal.m4 mpd-0.19.2/aclocal.m4 --- mpd-0.19.1/aclocal.m4 2014-10-11 20:26:11.000000000 +0200 +++ mpd-0.19.2/aclocal.m4 2014-11-02 12:27:52.000000000 +0100 @@ -1160,6 +1160,7 @@ m4_include([m4/faad.m4]) m4_include([m4/libwrap.m4]) m4_include([m4/mpd_auto.m4]) +m4_include([m4/mpd_depends.m4]) m4_include([m4/mpd_func.m4]) m4_include([m4/pkg.m4]) m4_include([m4/pretty_print.m4]) diff -Nru mpd-0.19.1/build/config.guess mpd-0.19.2/build/config.guess --- mpd-0.19.1/build/config.guess 2014-03-15 18:25:10.000000000 +0100 +++ mpd-0.19.2/build/config.guess 2014-10-25 00:34:13.000000000 +0200 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -826,7 +826,7 @@ *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -969,10 +969,10 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1260,16 +1260,26 @@ if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; @@ -1361,154 +1371,6 @@ exit ;; esac -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - cat >&2 <<EOF $0: unable to guess system type diff -Nru mpd-0.19.1/build/config.sub mpd-0.19.2/build/config.sub --- mpd-0.19.1/build/config.sub 2014-03-15 18:25:10.000000000 +0100 +++ mpd-0.19.2/build/config.sub 2014-10-25 00:34:13.000000000 +0200 @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-08-10' +timestamp='2014-09-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -265,6 +265,7 @@ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -282,8 +283,10 @@ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -295,11 +298,11 @@ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ @@ -324,7 +327,7 @@ c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -381,6 +384,7 @@ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ @@ -400,8 +404,10 @@ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -413,6 +419,7 @@ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ @@ -822,6 +829,10 @@ basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos @@ -1367,14 +1378,14 @@ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1592,9 +1603,6 @@ mips*-*) os=-elf ;; - or1k-*) - os=-elf - ;; or32-*) os=-coff ;; diff -Nru mpd-0.19.1/config.h.in mpd-0.19.2/config.h.in --- mpd-0.19.1/config.h.in 2014-10-11 20:26:20.000000000 +0200 +++ mpd-0.19.2/config.h.in 2014-11-02 12:28:01.000000000 +0100 @@ -138,9 +138,6 @@ /* Define to use FAAD2 for AAC decoding */ #undef HAVE_FAAD -/* Define if faad.h uses the broken "unsigned long" pointers */ -#undef HAVE_FAAD_LONG - /* Define for FFMPEG support */ #undef HAVE_FFMPEG diff -Nru mpd-0.19.1/configure mpd-0.19.2/configure --- mpd-0.19.1/configure 2014-10-11 20:26:12.000000000 +0200 +++ mpd-0.19.2/configure 2014-11-02 12:27:53.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for mpd 0.19.1. +# Generated by GNU Autoconf 2.69 for mpd 0.19.2. # # Report bugs to <musicpd-dev-t...@lists.sourceforge.net>. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='mpd' PACKAGE_TARNAME='mpd' -PACKAGE_VERSION='0.19.1' -PACKAGE_STRING='mpd 0.19.1' +PACKAGE_VERSION='0.19.2' +PACKAGE_STRING='mpd 0.19.2' PACKAGE_BUGREPORT='musicpd-dev-t...@lists.sourceforge.net' PACKAGE_URL='' @@ -633,8 +633,6 @@ ENABLE_DOCUMENTATION_FALSE ENABLE_DOCUMENTATION_TRUE DOXYGEN -HAVE_XMLTO_FALSE -HAVE_XMLTO_TRUE XMLTO ENABLE_WINMM_OUTPUT_FALSE ENABLE_WINMM_OUTPUT_TRUE @@ -1760,7 +1758,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures mpd 0.19.1 to adapt to many kinds of systems. +\`configure' configures mpd 0.19.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1830,7 +1828,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of mpd 0.19.1:";; + short | recursive ) echo "Configuration of mpd 0.19.2:";; esac cat <<\_ACEOF @@ -2177,7 +2175,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -mpd configure 0.19.1 +mpd configure 0.19.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2630,7 +2628,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by mpd $as_me 0.19.1, which was +It was created by mpd $as_me 0.19.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2981,7 +2979,7 @@ VERSION_MAJOR=0 VERSION_MINOR=19 -VERSION_REVISION=0 +VERSION_REVISION=2 VERSION_EXTRA=0 @@ -3500,7 +3498,7 @@ # Define the identity of the package. PACKAGE='mpd' - VERSION='0.19.1' + VERSION='0.19.2' cat >>confdefs.h <<_ACEOF @@ -7499,10 +7497,19 @@ if test "${enable_libmpdclient+set}" = set; then : enableval=$enable_libmpdclient; else - enable_libmpdclient=$database_auto + enable_libmpdclient=auto fi + if test x$enable_database = xno; then + if test x$enable_libmpdclient = xauto; then + enable_libmpdclient=no + elif test x$enable_libmpdclient = xyes; then + as_fn_error $? "Cannot use --enable-libmpdclient with --disable-database" "$LINENO" 5 + fi + fi + + # Check whether --enable-expat was given. if test "${enable_expat+set}" = set; then : enableval=$enable_expat; @@ -7515,10 +7522,19 @@ if test "${enable_upnp+set}" = set; then : enableval=$enable_upnp; else - enable_upnp=$database_auto + enable_upnp=auto fi + if test x$enable_database = xno; then + if test x$enable_upnp = xauto; then + enable_upnp=no + elif test x$enable_upnp = xyes; then + as_fn_error $? "Cannot use --enable-upnp with --disable-database" "$LINENO" 5 + fi + fi + + # Check whether --enable-adplug was given. if test "${enable_adplug+set}" = set; then : enableval=$enable_adplug; @@ -7551,6 +7567,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_ao = xauto; then + enable_ao=no + elif test x$enable_ao = xyes; then + as_fn_error $? "Cannot use --enable-ao with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-audiofile was given. if test "${enable_audiofile+set}" = set; then : enableval=$enable_audiofile; @@ -7583,6 +7608,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_cdio_paranoia = xauto; then + enable_cdio_paranoia=no + elif test x$enable_cdio_paranoia = xyes; then + as_fn_error $? "Cannot use --enable-cdio-paranoia with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-curl was given. if test "${enable_curl+set}" = set; then : enableval=$enable_curl; @@ -7671,6 +7705,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_gme = xauto; then + enable_gme=no + elif test x$enable_gme = xyes; then + as_fn_error $? "Cannot use --enable-gme with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-httpd-output was given. if test "${enable_httpd_output+set}" = set; then : enableval=$enable_httpd_output; @@ -7679,6 +7722,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_httpd_output = xauto; then + enable_httpd_output=no + elif test x$enable_httpd_output = xyes; then + as_fn_error $? "Cannot use --enable-httpd-output with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-id3 was given. if test "${enable_id3+set}" = set; then : enableval=$enable_id3; @@ -7719,6 +7771,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_jack = xauto; then + enable_jack=no + elif test x$enable_jack = xyes; then + as_fn_error $? "Cannot use --enable-jack with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; @@ -7936,6 +7997,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_soundcloud = xauto; then + enable_soundcloud=no + elif test x$enable_soundcloud = xyes; then + as_fn_error $? "Cannot use --enable-soundcloud with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-lame-encoder was given. if test "${enable_lame_encoder+set}" = set; then : enableval=$enable_lame_encoder; @@ -8088,6 +8158,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_sidplay = xauto; then + enable_sidplay=no + elif test x$enable_sidplay = xyes; then + as_fn_error $? "Cannot use --enable-sidplay with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-shine-encoder was given. if test "${enable_shine_encoder+set}" = set; then : enableval=$enable_shine_encoder; @@ -8128,6 +8207,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_sqlite = xauto; then + enable_sqlite=no + elif test x$enable_sqlite = xyes; then + as_fn_error $? "Cannot use --enable-sqlite with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-systemd-daemon was given. if test "${enable_systemd_daemon+set}" = set; then : enableval=$enable_systemd_daemon; @@ -8193,6 +8281,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_vorbis_encoder = xauto; then + enable_vorbis_encoder=no + elif test x$enable_vorbis_encoder = xyes; then + as_fn_error $? "Cannot use --enable-vorbis-encoder with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-wave-encoder was given. if test "${enable_wave_encoder+set}" = set; then : enableval=$enable_wave_encoder; @@ -8209,6 +8306,15 @@ fi + if test x$enable_glib = xno; then + if test x$enable_wavpack = xauto; then + enable_wavpack=no + elif test x$enable_wavpack = xyes; then + as_fn_error $? "Cannot use --enable-wavpack with --disable-glib" "$LINENO" 5 + fi + fi + + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : enableval=$enable_werror; @@ -12620,48 +12726,7 @@ CPPFLAGS=$oldcppflags fi -if test x$enable_aac = xyes; then - oldcflags=$CFLAGS - oldlibs=$LIBS - oldcppflags=$CPPFLAGS - CFLAGS="$CFLAGS $FAAD_CFLAGS -Werror" - LIBS="$LIBS $FAAD_LIBS" - CPPFLAGS=$CFLAGS - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken libfaad headers" >&5 -$as_echo_n "checking for broken libfaad headers... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include <faad.h> -#include <stddef.h> -#include <stdint.h> - -int main() { - unsigned char channels; - uint32_t sample_rate; - - NeAACDecInit2(NULL, NULL, 0, &sample_rate, &channels); - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: correct" >&5 -$as_echo "correct" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken" >&5 -$as_echo "broken" >&6; }; - -$as_echo "#define HAVE_FAAD_LONG 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - - CFLAGS=$oldcflags - LIBS=$oldlibs - CPPFLAGS=$oldcppflags -else +if test x$enable_aac = xno; then FAAD_LIBS="" FAAD_CFLAGS="" fi @@ -16761,14 +16826,10 @@ fi + if test x$XMLTO = x; then + as_fn_error $? "xmlto not found" "$LINENO" 5 + fi - if test x$XMLTO != x; then - HAVE_XMLTO_TRUE= - HAVE_XMLTO_FALSE='#' -else - HAVE_XMLTO_TRUE='#' - HAVE_XMLTO_FALSE= -fi # Extract the first word of "doxygen", so it can be a program name with args. @@ -16816,15 +16877,6 @@ fi -else - if false; then - HAVE_XMLTO_TRUE= - HAVE_XMLTO_FALSE='#' -else - HAVE_XMLTO_TRUE='#' - HAVE_XMLTO_FALSE= -fi - fi if test x$enable_documentation = xyes; then @@ -19216,6 +19268,44 @@ printf '%s) ' "UNIX Domain Sockets" +printf '\nStorage support:\n\t' + + num=`expr nfs : 'with'` + if test "$num" != "0"; then + var="`echo '$'nfs`" + else + var="`echo '$'enable_nfs`" + fi + + printf '(' + if eval "test x$var = xyes"; then + printf '+' + elif test -n "" && eval "test x$var = x"; then + printf '+' + else + printf '-' + fi + printf '%s) ' "NFS" + + + num=`expr smbclient : 'with'` + if test "$num" != "0"; then + var="`echo '$'smbclient`" + else + var="`echo '$'enable_smbclient`" + fi + + printf '(' + if eval "test x$var = xyes"; then + printf '+' + elif test -n "" && eval "test x$var = x"; then + printf '+' + else + printf '-' + fi + printf '%s) ' "SMB" + + printf '\nFile format support:\n\t' num=`expr aac : 'with'` @@ -19254,6 +19344,24 @@ printf '%s) ' "AdPlug" + num=`expr dsd : 'with'` + if test "$num" != "0"; then + var="`echo '$'dsd`" + else + var="`echo '$'enable_dsd`" + fi + + printf '(' + if eval "test x$var = xyes"; then + printf '+' + elif test -n "" && eval "test x$var = x"; then + printf '+' + else + printf '-' + fi + printf '%s) ' "DSD" + + num=`expr sidplay : 'with'` if test "$num" != "0"; then var="`echo '$'sidplay`" @@ -20672,14 +20780,6 @@ as_fn_error $? "conditional \"ENABLE_WINMM_OUTPUT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HAVE_XMLTO_TRUE}" && test -z "${HAVE_XMLTO_FALSE}"; then - as_fn_error $? "conditional \"HAVE_XMLTO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_XMLTO_TRUE}" && test -z "${HAVE_XMLTO_FALSE}"; then - as_fn_error $? "conditional \"HAVE_XMLTO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${ENABLE_DOCUMENTATION_TRUE}" && test -z "${ENABLE_DOCUMENTATION_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DOCUMENTATION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -21085,7 +21185,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by mpd $as_me 0.19.1, which was +This file was extended by mpd $as_me 0.19.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21151,7 +21251,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -mpd config.status 0.19.1 +mpd config.status 0.19.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru mpd-0.19.1/configure.ac mpd-0.19.2/configure.ac --- mpd-0.19.1/configure.ac 2014-10-11 20:25:57.000000000 +0200 +++ mpd-0.19.2/configure.ac 2014-11-02 12:26:56.000000000 +0100 @@ -1,10 +1,10 @@ AC_PREREQ(2.60) -AC_INIT(mpd, 0.19.1, musicpd-dev-t...@lists.sourceforge.net) +AC_INIT(mpd, 0.19.2, musicpd-dev-t...@lists.sourceforge.net) VERSION_MAJOR=0 VERSION_MINOR=19 -VERSION_REVISION=0 +VERSION_REVISION=2 VERSION_EXTRA=0 AC_CONFIG_SRCDIR([src/Main.cxx]) @@ -293,7 +293,9 @@ AC_ARG_ENABLE(libmpdclient, AS_HELP_STRING([--enable-libmpdclient], [enable support for the MPD client]),, - enable_libmpdclient=$database_auto) + enable_libmpdclient=auto) +MPD_DEPENDS([enable_libmpdclient], [enable_database], + [Cannot use --enable-libmpdclient with --disable-database]) AC_ARG_ENABLE(expat, AS_HELP_STRING([--enable-expat], @@ -303,7 +305,9 @@ AC_ARG_ENABLE(upnp, AS_HELP_STRING([--enable-upnp], [enable UPnP client support (default: auto)]),, - enable_upnp=$database_auto) + enable_upnp=auto) +MPD_DEPENDS([enable_upnp], [enable_database], + [Cannot use --enable-upnp with --disable-database]) AC_ARG_ENABLE(adplug, AS_HELP_STRING([--enable-adplug], @@ -323,6 +327,8 @@ AS_HELP_STRING([--enable-ao], [enable support for libao]),, enable_ao=auto) +MPD_DEPENDS([enable_ao], [enable_glib], + [Cannot use --enable-ao with --disable-glib]) AC_ARG_ENABLE(audiofile, AS_HELP_STRING([--enable-audiofile], @@ -343,6 +349,8 @@ AS_HELP_STRING([--enable-cdio-paranoia], [enable support for audio CD support]),, enable_cdio_paranoia=auto) +MPD_DEPENDS([enable_cdio_paranoia], [enable_glib], + [Cannot use --enable-cdio-paranoia with --disable-glib]) AC_ARG_ENABLE(curl, AS_HELP_STRING([--enable-curl], @@ -398,11 +406,15 @@ AS_HELP_STRING([--enable-gme], [enable Blargg's game music emulator plugin]),, enable_gme=auto) +MPD_DEPENDS([enable_gme], [enable_glib], + [Cannot use --enable-gme with --disable-glib]) AC_ARG_ENABLE(httpd-output, AS_HELP_STRING([--enable-httpd-output], [enables the HTTP server output]),, [enable_httpd_output=auto]) +MPD_DEPENDS([enable_httpd_output], [enable_glib], + [Cannot use --enable-httpd-output with --disable-glib]) AC_ARG_ENABLE(id3, AS_HELP_STRING([--enable-id3], @@ -428,6 +440,8 @@ AS_HELP_STRING([--enable-jack], [enable jack support]),, enable_jack=auto) +MPD_DEPENDS([enable_jack], [enable_glib], + [Cannot use --enable-jack with --disable-glib]) AC_SYS_LARGEFILE @@ -440,6 +454,8 @@ AS_HELP_STRING([--enable-soundcloud], [enable support for soundcloud.com]),, [enable_soundcloud=auto]) +MPD_DEPENDS([enable_soundcloud], [enable_glib], + [Cannot use --enable-soundcloud with --disable-glib]) AC_ARG_ENABLE(lame-encoder, AS_HELP_STRING([--enable-lame-encoder], @@ -534,6 +550,8 @@ AS_HELP_STRING([--enable-sidplay], [enable C64 SID support via libsidplay2]),, enable_sidplay=auto) +MPD_DEPENDS([enable_sidplay], [enable_glib], + [Cannot use --enable-sidplay with --disable-glib]) AC_ARG_ENABLE(shine-encoder, AS_HELP_STRING([--enable-shine-encoder], @@ -559,6 +577,8 @@ AS_HELP_STRING([--enable-sqlite], [enable support for the SQLite database]),, [enable_sqlite=$database_auto]) +MPD_DEPENDS([enable_sqlite], [enable_glib], + [Cannot use --enable-sqlite with --disable-glib]) AC_ARG_ENABLE(systemd-daemon, AS_HELP_STRING([--enable-systemd-daemon], @@ -599,6 +619,8 @@ AS_HELP_STRING([--enable-vorbis-encoder], [enable the Ogg Vorbis encoder]),, [enable_vorbis_encoder=auto]) +MPD_DEPENDS([enable_vorbis_encoder], [enable_glib], + [Cannot use --enable-vorbis-encoder with --disable-glib]) AC_ARG_ENABLE(wave-encoder, AS_HELP_STRING([--enable-wave-encoder], @@ -609,6 +631,8 @@ AS_HELP_STRING([--enable-wavpack], [enable WavPack support]),, enable_wavpack=auto) +MPD_DEPENDS([enable_wavpack], [enable_glib], + [Cannot use --enable-wavpack with --disable-glib]) AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror], @@ -1709,8 +1733,11 @@ dnl --------------------------------------------------------------------------- if test x$enable_documentation = xyes; then AC_PATH_PROG(XMLTO, xmlto) + if test x$XMLTO = x; then + AC_MSG_ERROR([xmlto not found]) + fi + AC_SUBST(XMLTO) - AM_CONDITIONAL(HAVE_XMLTO, test x$XMLTO != x) AC_PATH_PROG(DOXYGEN, doxygen) if test x$DOXYGEN = x; then @@ -1718,8 +1745,6 @@ fi AC_SUBST(DOXYGEN) -else - AM_CONDITIONAL(HAVE_XMLTO, false) fi AM_CONDITIONAL(ENABLE_DOCUMENTATION, test x$enable_documentation = xyes) @@ -1826,9 +1851,14 @@ results(tcp, "TCP") results(un,[UNIX Domain Sockets]) +printf '\nStorage support:\n\t' +results(nfs, [NFS]) +results(smbclient, [SMB]) + printf '\nFile format support:\n\t' results(aac, [AAC]) results(adplug, [AdPlug]) +results(dsd, [DSD]) results(sidplay, [C64 SID]) results(ffmpeg, [FFMPEG]) results(flac, [FLAC]) diff -Nru mpd-0.19.1/debian/changelog mpd-0.19.2/debian/changelog --- mpd-0.19.1/debian/changelog 2014-10-20 00:38:46.000000000 +0200 +++ mpd-0.19.2/debian/changelog 2014-11-02 23:20:25.000000000 +0100 @@ -1,3 +1,10 @@ +mpd (0.19.2-1) unstable; urgency=medium + + * Import Upstream version 0.19.2 (closes: #767684) + * Disable libmp4v2 due to incompatible license (closes: #767504) + + -- Florian Schlichting <f...@debian.org> Sun, 02 Nov 2014 23:19:28 +0100 + mpd (0.19.1-1) unstable; urgency=medium * Import Upstream version 0.19.1 diff -Nru mpd-0.19.1/doc/doxygen.conf mpd-0.19.2/doc/doxygen.conf --- mpd-0.19.1/doc/doxygen.conf 2014-10-11 20:26:19.000000000 +0200 +++ mpd-0.19.2/doc/doxygen.conf 2014-11-02 12:28:00.000000000 +0100 @@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.19.1 +PROJECT_NUMBER = 0.19.2 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -534,7 +534,7 @@ # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = /home/max/git/mpd/src/ +INPUT = /home/max/git/stable-mpd/src/ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is diff -Nru mpd-0.19.1/m4/faad.m4 mpd-0.19.2/m4/faad.m4 --- mpd-0.19.1/m4/faad.m4 2013-07-26 12:08:46.000000000 +0200 +++ mpd-0.19.2/m4/faad.m4 2014-10-25 20:41:52.000000000 +0200 @@ -62,36 +62,7 @@ CPPFLAGS=$oldcppflags fi -if test x$enable_aac = xyes; then - oldcflags=$CFLAGS - oldlibs=$LIBS - oldcppflags=$CPPFLAGS - CFLAGS="$CFLAGS $FAAD_CFLAGS -Werror" - LIBS="$LIBS $FAAD_LIBS" - CPPFLAGS=$CFLAGS - - AC_MSG_CHECKING(for broken libfaad headers) - AC_COMPILE_IFELSE([AC_LANG_SOURCE([ -#include <faad.h> -#include <stddef.h> -#include <stdint.h> - -int main() { - unsigned char channels; - uint32_t sample_rate; - - NeAACDecInit2(NULL, NULL, 0, &sample_rate, &channels); - return 0; -} - ])], - [AC_MSG_RESULT(correct)], - [AC_MSG_RESULT(broken); - AC_DEFINE(HAVE_FAAD_LONG, 1, [Define if faad.h uses the broken "unsigned long" pointers])]) - - CFLAGS=$oldcflags - LIBS=$oldlibs - CPPFLAGS=$oldcppflags -else +if test x$enable_aac = xno; then FAAD_LIBS="" FAAD_CFLAGS="" fi diff -Nru mpd-0.19.1/m4/mpd_depends.m4 mpd-0.19.2/m4/mpd_depends.m4 --- mpd-0.19.1/m4/mpd_depends.m4 1970-01-01 01:00:00.000000000 +0100 +++ mpd-0.19.2/m4/mpd_depends.m4 2014-10-25 00:28:53.000000000 +0200 @@ -0,0 +1,9 @@ +AC_DEFUN([MPD_DEPENDS], [ + if test x$$2 = xno; then + if test x$$1 = xauto; then + $1=no + elif test x$$1 = xyes; then + AC_MSG_ERROR([$3]) + fi + fi +]) diff -Nru mpd-0.19.1/Makefile.am mpd-0.19.2/Makefile.am --- mpd-0.19.1/Makefile.am 2014-10-12 08:41:09.000000000 +0200 +++ mpd-0.19.2/Makefile.am 2014-11-01 13:47:41.000000000 +0100 @@ -130,7 +130,6 @@ src/IOThread.cxx src/IOThread.hxx \ src/Instance.cxx src/Instance.hxx \ src/win32/Win32Main.cxx \ - src/osx/OSXMain.cxx \ src/GlobalEvents.cxx src/GlobalEvents.hxx \ src/MixRampInfo.hxx \ src/MusicBuffer.cxx src/MusicBuffer.hxx \ @@ -2141,19 +2140,11 @@ developerdir = $(docdir)/developer developer_DATA = $(wildcard doc/developer/*.html) -if HAVE_XMLTO - DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES)) $(DOCBOOK_HTML): %/index.html: %.xml $(XMLTO) -o $(@D) --stringparam chunker.output.encoding=utf-8 html --stringparam use.id.as.filename=1 $< -else - -DOCBOOK_HTML = - -endif - doc/api/html/index.html: doc/doxygen.conf @$(MKDIR_P) $(@D) $(DOXYGEN) $< diff -Nru mpd-0.19.1/Makefile.in mpd-0.19.2/Makefile.in --- mpd-0.19.1/Makefile.in 2014-10-13 21:27:10.000000000 +0200 +++ mpd-0.19.2/Makefile.in 2014-11-02 12:27:56.000000000 +0100 @@ -596,9 +596,10 @@ $(top_srcdir)/m4/ax_pthread.m4 \ $(top_srcdir)/m4/ax_require_defined.m4 \ $(top_srcdir)/m4/faad.m4 $(top_srcdir)/m4/libwrap.m4 \ - $(top_srcdir)/m4/mpd_auto.m4 $(top_srcdir)/m4/mpd_func.m4 \ - $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/pretty_print.m4 \ - $(top_srcdir)/m4/ucred.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/mpd_auto.m4 $(top_srcdir)/m4/mpd_depends.m4 \ + $(top_srcdir)/m4/mpd_func.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/pretty_print.m4 $(top_srcdir)/m4/ucred.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -1184,19 +1185,19 @@ src/LogBackend.hxx src/Log.cxx src/Log.hxx src/LogV.hxx \ src/LogLevel.hxx src/ls.cxx src/ls.hxx src/IOThread.cxx \ src/IOThread.hxx src/Instance.cxx src/Instance.hxx \ - src/win32/Win32Main.cxx src/osx/OSXMain.cxx \ - src/GlobalEvents.cxx src/GlobalEvents.hxx src/MixRampInfo.hxx \ - src/MusicBuffer.cxx src/MusicBuffer.hxx src/MusicPipe.cxx \ - src/MusicPipe.hxx src/MusicChunk.cxx src/MusicChunk.hxx \ - src/Mapper.cxx src/Mapper.hxx src/Partition.cxx \ - src/Partition.hxx src/Permission.cxx src/Permission.hxx \ - src/PlayerThread.cxx src/PlayerThread.hxx \ - src/PlayerControl.cxx src/PlayerControl.hxx \ - src/PlayerListener.hxx src/PlaylistError.cxx \ - src/PlaylistError.hxx src/PlaylistGlobal.cxx \ - src/PlaylistGlobal.hxx src/PlaylistPrint.cxx \ - src/PlaylistPrint.hxx src/PlaylistSave.cxx \ - src/PlaylistSave.hxx src/playlist/PlaylistStream.cxx \ + src/win32/Win32Main.cxx src/GlobalEvents.cxx \ + src/GlobalEvents.hxx src/MixRampInfo.hxx src/MusicBuffer.cxx \ + src/MusicBuffer.hxx src/MusicPipe.cxx src/MusicPipe.hxx \ + src/MusicChunk.cxx src/MusicChunk.hxx src/Mapper.cxx \ + src/Mapper.hxx src/Partition.cxx src/Partition.hxx \ + src/Permission.cxx src/Permission.hxx src/PlayerThread.cxx \ + src/PlayerThread.hxx src/PlayerControl.cxx \ + src/PlayerControl.hxx src/PlayerListener.hxx \ + src/PlaylistError.cxx src/PlaylistError.hxx \ + src/PlaylistGlobal.cxx src/PlaylistGlobal.hxx \ + src/PlaylistPrint.cxx src/PlaylistPrint.hxx \ + src/PlaylistSave.cxx src/PlaylistSave.hxx \ + src/playlist/PlaylistStream.cxx \ src/playlist/PlaylistStream.hxx \ src/playlist/PlaylistMapper.cxx \ src/playlist/PlaylistMapper.hxx src/playlist/PlaylistAny.cxx \ @@ -1378,7 +1379,6 @@ src/libmpd_a-ls.$(OBJEXT) src/libmpd_a-IOThread.$(OBJEXT) \ src/libmpd_a-Instance.$(OBJEXT) \ src/win32/libmpd_a-Win32Main.$(OBJEXT) \ - src/osx/libmpd_a-OSXMain.$(OBJEXT) \ src/libmpd_a-GlobalEvents.$(OBJEXT) \ src/libmpd_a-MusicBuffer.$(OBJEXT) \ src/libmpd_a-MusicPipe.$(OBJEXT) \ @@ -3126,19 +3126,19 @@ src/LogBackend.hxx src/Log.cxx src/Log.hxx src/LogV.hxx \ src/LogLevel.hxx src/ls.cxx src/ls.hxx src/IOThread.cxx \ src/IOThread.hxx src/Instance.cxx src/Instance.hxx \ - src/win32/Win32Main.cxx src/osx/OSXMain.cxx \ - src/GlobalEvents.cxx src/GlobalEvents.hxx src/MixRampInfo.hxx \ - src/MusicBuffer.cxx src/MusicBuffer.hxx src/MusicPipe.cxx \ - src/MusicPipe.hxx src/MusicChunk.cxx src/MusicChunk.hxx \ - src/Mapper.cxx src/Mapper.hxx src/Partition.cxx \ - src/Partition.hxx src/Permission.cxx src/Permission.hxx \ - src/PlayerThread.cxx src/PlayerThread.hxx \ - src/PlayerControl.cxx src/PlayerControl.hxx \ - src/PlayerListener.hxx src/PlaylistError.cxx \ - src/PlaylistError.hxx src/PlaylistGlobal.cxx \ - src/PlaylistGlobal.hxx src/PlaylistPrint.cxx \ - src/PlaylistPrint.hxx src/PlaylistSave.cxx \ - src/PlaylistSave.hxx src/playlist/PlaylistStream.cxx \ + src/win32/Win32Main.cxx src/GlobalEvents.cxx \ + src/GlobalEvents.hxx src/MixRampInfo.hxx src/MusicBuffer.cxx \ + src/MusicBuffer.hxx src/MusicPipe.cxx src/MusicPipe.hxx \ + src/MusicChunk.cxx src/MusicChunk.hxx src/Mapper.cxx \ + src/Mapper.hxx src/Partition.cxx src/Partition.hxx \ + src/Permission.cxx src/Permission.hxx src/PlayerThread.cxx \ + src/PlayerThread.hxx src/PlayerControl.cxx \ + src/PlayerControl.hxx src/PlayerListener.hxx \ + src/PlaylistError.cxx src/PlaylistError.hxx \ + src/PlaylistGlobal.cxx src/PlaylistGlobal.hxx \ + src/PlaylistPrint.cxx src/PlaylistPrint.hxx \ + src/PlaylistSave.cxx src/PlaylistSave.hxx \ + src/playlist/PlaylistStream.cxx \ src/playlist/PlaylistStream.hxx \ src/playlist/PlaylistMapper.cxx \ src/playlist/PlaylistMapper.hxx src/playlist/PlaylistAny.cxx \ @@ -4308,8 +4308,7 @@ @ENABLE_DOCUMENTATION_TRUE@user_DATA = $(wildcard doc/user/*.html) @ENABLE_DOCUMENTATION_TRUE@developerdir = $(docdir)/developer @ENABLE_DOCUMENTATION_TRUE@developer_DATA = $(wildcard doc/developer/*.html) -@ENABLE_DOCUMENTATION_TRUE@@HAVE_XMLTO_FALSE@DOCBOOK_HTML = -@ENABLE_DOCUMENTATION_TRUE@@HAVE_XMLTO_TRUE@DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES)) +@ENABLE_DOCUMENTATION_TRUE@DOCBOOK_HTML = $(patsubst %.xml,%/index.html,$(DOCBOOK_FILES)) # # Distribution @@ -5319,14 +5318,6 @@ @: > src/win32/$(DEPDIR)/$(am__dirstamp) src/win32/libmpd_a-Win32Main.$(OBJEXT): src/win32/$(am__dirstamp) \ src/win32/$(DEPDIR)/$(am__dirstamp) -src/osx/$(am__dirstamp): - @$(MKDIR_P) src/osx - @: > src/osx/$(am__dirstamp) -src/osx/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/osx/$(DEPDIR) - @: > src/osx/$(DEPDIR)/$(am__dirstamp) -src/osx/libmpd_a-OSXMain.$(OBJEXT): src/osx/$(am__dirstamp) \ - src/osx/$(DEPDIR)/$(am__dirstamp) src/libmpd_a-GlobalEvents.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/libmpd_a-MusicBuffer.$(OBJEXT): src/$(am__dirstamp) \ @@ -6504,7 +6495,6 @@ -rm -f src/mixer/plugins/*.$(OBJEXT) -rm -f src/neighbor/*.$(OBJEXT) -rm -f src/neighbor/plugins/*.$(OBJEXT) - -rm -f src/osx/*.$(OBJEXT) -rm -f src/output/*.$(OBJEXT) -rm -f src/output/plugins/*.$(OBJEXT) -rm -f src/output/plugins/httpd/*.$(OBJEXT) @@ -6902,7 +6892,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@src/neighbor/$(DEPDIR)/libneighbor_a-Registry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/neighbor/plugins/$(DEPDIR)/libneighbor_a-SmbclientNeighborPlugin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/neighbor/plugins/$(DEPDIR)/libneighbor_a-UpnpNeighborPlugin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/osx/$(DEPDIR)/libmpd_a-OSXMain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/output/$(DEPDIR)/Domain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/output/$(DEPDIR)/Finish.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/output/$(DEPDIR)/Init.Po@am__quote@ @@ -9844,20 +9833,6 @@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/win32/libmpd_a-Win32Main.obj `if test -f 'src/win32/Win32Main.cxx'; then $(CYGPATH_W) 'src/win32/Win32Main.cxx'; else $(CYGPATH_W) '$(srcdir)/src/win32/Win32Main.cxx'; fi` -src/osx/libmpd_a-OSXMain.o: src/osx/OSXMain.cxx -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/osx/libmpd_a-OSXMain.o -MD -MP -MF src/osx/$(DEPDIR)/libmpd_a-OSXMain.Tpo -c -o src/osx/libmpd_a-OSXMain.o `test -f 'src/osx/OSXMain.cxx' || echo '$(srcdir)/'`src/osx/OSXMain.cxx -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/osx/$(DEPDIR)/libmpd_a-OSXMain.Tpo src/osx/$(DEPDIR)/libmpd_a-OSXMain.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/osx/OSXMain.cxx' object='src/osx/libmpd_a-OSXMain.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/osx/libmpd_a-OSXMain.o `test -f 'src/osx/OSXMain.cxx' || echo '$(srcdir)/'`src/osx/OSXMain.cxx - -src/osx/libmpd_a-OSXMain.obj: src/osx/OSXMain.cxx -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/osx/libmpd_a-OSXMain.obj -MD -MP -MF src/osx/$(DEPDIR)/libmpd_a-OSXMain.Tpo -c -o src/osx/libmpd_a-OSXMain.obj `if test -f 'src/osx/OSXMain.cxx'; then $(CYGPATH_W) 'src/osx/OSXMain.cxx'; else $(CYGPATH_W) '$(srcdir)/src/osx/OSXMain.cxx'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/osx/$(DEPDIR)/libmpd_a-OSXMain.Tpo src/osx/$(DEPDIR)/libmpd_a-OSXMain.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/osx/OSXMain.cxx' object='src/osx/libmpd_a-OSXMain.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/osx/libmpd_a-OSXMain.obj `if test -f 'src/osx/OSXMain.cxx'; then $(CYGPATH_W) 'src/osx/OSXMain.cxx'; else $(CYGPATH_W) '$(srcdir)/src/osx/OSXMain.cxx'; fi` - src/libmpd_a-GlobalEvents.o: src/GlobalEvents.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/libmpd_a-GlobalEvents.o -MD -MP -MF src/$(DEPDIR)/libmpd_a-GlobalEvents.Tpo -c -o src/libmpd_a-GlobalEvents.o `test -f 'src/GlobalEvents.cxx' || echo '$(srcdir)/'`src/GlobalEvents.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/libmpd_a-GlobalEvents.Tpo src/$(DEPDIR)/libmpd_a-GlobalEvents.Po @@ -13992,8 +13967,6 @@ -rm -f src/neighbor/$(am__dirstamp) -rm -f src/neighbor/plugins/$(DEPDIR)/$(am__dirstamp) -rm -f src/neighbor/plugins/$(am__dirstamp) - -rm -f src/osx/$(DEPDIR)/$(am__dirstamp) - -rm -f src/osx/$(am__dirstamp) -rm -f src/output/$(DEPDIR)/$(am__dirstamp) -rm -f src/output/$(am__dirstamp) -rm -f src/output/plugins/$(DEPDIR)/$(am__dirstamp) @@ -14042,8 +14015,8 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@ENABLE_DOCUMENTATION_FALSE@install-data-local: @ANDROID_FALSE@@ENABLE_DOCUMENTATION_FALSE@clean-local: +@ENABLE_DOCUMENTATION_FALSE@install-data-local: @ENABLE_DOCUMENTATION_FALSE@uninstall-local: clean: clean-am @@ -14052,7 +14025,7 @@ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf src/$(DEPDIR) src/AudioCompress/$(DEPDIR) src/android/$(DEPDIR) src/archive/$(DEPDIR) src/archive/plugins/$(DEPDIR) src/client/$(DEPDIR) src/command/$(DEPDIR) src/config/$(DEPDIR) src/db/$(DEPDIR) src/db/plugins/$(DEPDIR) src/db/plugins/simple/$(DEPDIR) src/db/plugins/upnp/$(DEPDIR) src/db/update/$(DEPDIR) src/decoder/$(DEPDIR) src/decoder/plugins/$(DEPDIR) src/encoder/$(DEPDIR) src/encoder/plugins/$(DEPDIR) src/event/$(DEPDIR) src/filter/$(DEPDIR) src/filter/plugins/$(DEPDIR) src/fs/$(DEPDIR) src/fs/io/$(DEPDIR) src/input/$(DEPDIR) src/input/plugins/$(DEPDIR) src/java/$(DEPDIR) src/lib/despotify/$(DEPDIR) src/lib/expat/$(DEPDIR) src/lib/ffmpeg/$(DEPDIR) src/lib/icu/$(DEPDIR) src/lib/nfs/$(DEPDIR) src/lib/smbclient/$(DEPDIR) src/lib/upnp/$(DEPDIR) src/lib/zlib/$(DEPDIR) src/mixer/$(DEPDIR) src/mixer/plugins/$(DEPDIR) src/neighbor/$(DEPDIR) src/neighbor/plugins/$(DEPDIR) src/osx/$(DEPDIR) src/output/$(DEPDIR) src/output/plugins/$(DEPDIR) src/output/plugins/httpd/$(DEPDIR) src/output/plugins/sles/$(DEPDIR) src/pcm/$(DEPDIR) src/pcm/dsd2pcm/$(DEPDIR) src/playlist/$(DEPDIR) src/playlist/cue/$(DEPDIR) src/playlist/plugins/$(DEPDIR) src/protocol/$(DEPDIR) src/queue/$(DEPDIR) src/sticker/$(DEPDIR) src/storage/$(DEPDIR) src/storage/plugins/$(DEPDIR) src/system/$(DEPDIR) src/tag/$(DEPDIR) src/thread/$(DEPDIR) src/unix/$(DEPDIR) src/util/$(DEPDIR) src/win32/$(DEPDIR) src/zeroconf/$(DEPDIR) test/$(DEPDIR) + -rm -rf src/$(DEPDIR) src/AudioCompress/$(DEPDIR) src/android/$(DEPDIR) src/archive/$(DEPDIR) src/archive/plugins/$(DEPDIR) src/client/$(DEPDIR) src/command/$(DEPDIR) src/config/$(DEPDIR) src/db/$(DEPDIR) src/db/plugins/$(DEPDIR) src/db/plugins/simple/$(DEPDIR) src/db/plugins/upnp/$(DEPDIR) src/db/update/$(DEPDIR) src/decoder/$(DEPDIR) src/decoder/plugins/$(DEPDIR) src/encoder/$(DEPDIR) src/encoder/plugins/$(DEPDIR) src/event/$(DEPDIR) src/filter/$(DEPDIR) src/filter/plugins/$(DEPDIR) src/fs/$(DEPDIR) src/fs/io/$(DEPDIR) src/input/$(DEPDIR) src/input/plugins/$(DEPDIR) src/java/$(DEPDIR) src/lib/despotify/$(DEPDIR) src/lib/expat/$(DEPDIR) src/lib/ffmpeg/$(DEPDIR) src/lib/icu/$(DEPDIR) src/lib/nfs/$(DEPDIR) src/lib/smbclient/$(DEPDIR) src/lib/upnp/$(DEPDIR) src/lib/zlib/$(DEPDIR) src/mixer/$(DEPDIR) src/mixer/plugins/$(DEPDIR) src/neighbor/$(DEPDIR) src/neighbor/plugins/$(DEPDIR) src/output/$(DEPDIR) src/output/plugins/$(DEPDIR) src/output/plugins/httpd/$(DEPDIR) src/output/plugins/sles/$(DEPDIR) src/pcm/$(DEPDIR) src/pcm/dsd2pcm/$(DEPDIR) src/playlist/$(DEPDIR) src/playlist/cue/$(DEPDIR) src/playlist/plugins/$(DEPDIR) src/protocol/$(DEPDIR) src/queue/$(DEPDIR) src/sticker/$(DEPDIR) src/storage/$(DEPDIR) src/storage/plugins/$(DEPDIR) src/system/$(DEPDIR) src/tag/$(DEPDIR) src/thread/$(DEPDIR) src/unix/$(DEPDIR) src/util/$(DEPDIR) src/win32/$(DEPDIR) src/zeroconf/$(DEPDIR) test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags @@ -14102,7 +14075,7 @@ maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf src/$(DEPDIR) src/AudioCompress/$(DEPDIR) src/android/$(DEPDIR) src/archive/$(DEPDIR) src/archive/plugins/$(DEPDIR) src/client/$(DEPDIR) src/command/$(DEPDIR) src/config/$(DEPDIR) src/db/$(DEPDIR) src/db/plugins/$(DEPDIR) src/db/plugins/simple/$(DEPDIR) src/db/plugins/upnp/$(DEPDIR) src/db/update/$(DEPDIR) src/decoder/$(DEPDIR) src/decoder/plugins/$(DEPDIR) src/encoder/$(DEPDIR) src/encoder/plugins/$(DEPDIR) src/event/$(DEPDIR) src/filter/$(DEPDIR) src/filter/plugins/$(DEPDIR) src/fs/$(DEPDIR) src/fs/io/$(DEPDIR) src/input/$(DEPDIR) src/input/plugins/$(DEPDIR) src/java/$(DEPDIR) src/lib/despotify/$(DEPDIR) src/lib/expat/$(DEPDIR) src/lib/ffmpeg/$(DEPDIR) src/lib/icu/$(DEPDIR) src/lib/nfs/$(DEPDIR) src/lib/smbclient/$(DEPDIR) src/lib/upnp/$(DEPDIR) src/lib/zlib/$(DEPDIR) src/mixer/$(DEPDIR) src/mixer/plugins/$(DEPDIR) src/neighbor/$(DEPDIR) src/neighbor/plugins/$(DEPDIR) src/osx/$(DEPDIR) src/output/$(DEPDIR) src/output/plugins/$(DEPDIR) src/output/plugins/httpd/$(DEPDIR) src/output/plugins/sles/$(DEPDIR) src/pcm/$(DEPDIR) src/pcm/dsd2pcm/$(DEPDIR) src/playlist/$(DEPDIR) src/playlist/cue/$(DEPDIR) src/playlist/plugins/$(DEPDIR) src/protocol/$(DEPDIR) src/queue/$(DEPDIR) src/sticker/$(DEPDIR) src/storage/$(DEPDIR) src/storage/plugins/$(DEPDIR) src/system/$(DEPDIR) src/tag/$(DEPDIR) src/thread/$(DEPDIR) src/unix/$(DEPDIR) src/util/$(DEPDIR) src/win32/$(DEPDIR) src/zeroconf/$(DEPDIR) test/$(DEPDIR) + -rm -rf src/$(DEPDIR) src/AudioCompress/$(DEPDIR) src/android/$(DEPDIR) src/archive/$(DEPDIR) src/archive/plugins/$(DEPDIR) src/client/$(DEPDIR) src/command/$(DEPDIR) src/config/$(DEPDIR) src/db/$(DEPDIR) src/db/plugins/$(DEPDIR) src/db/plugins/simple/$(DEPDIR) src/db/plugins/upnp/$(DEPDIR) src/db/update/$(DEPDIR) src/decoder/$(DEPDIR) src/decoder/plugins/$(DEPDIR) src/encoder/$(DEPDIR) src/encoder/plugins/$(DEPDIR) src/event/$(DEPDIR) src/filter/$(DEPDIR) src/filter/plugins/$(DEPDIR) src/fs/$(DEPDIR) src/fs/io/$(DEPDIR) src/input/$(DEPDIR) src/input/plugins/$(DEPDIR) src/java/$(DEPDIR) src/lib/despotify/$(DEPDIR) src/lib/expat/$(DEPDIR) src/lib/ffmpeg/$(DEPDIR) src/lib/icu/$(DEPDIR) src/lib/nfs/$(DEPDIR) src/lib/smbclient/$(DEPDIR) src/lib/upnp/$(DEPDIR) src/lib/zlib/$(DEPDIR) src/mixer/$(DEPDIR) src/mixer/plugins/$(DEPDIR) src/neighbor/$(DEPDIR) src/neighbor/plugins/$(DEPDIR) src/output/$(DEPDIR) src/output/plugins/$(DEPDIR) src/output/plugins/httpd/$(DEPDIR) src/output/plugins/sles/$(DEPDIR) src/pcm/$(DEPDIR) src/pcm/dsd2pcm/$(DEPDIR) src/playlist/$(DEPDIR) src/playlist/cue/$(DEPDIR) src/playlist/plugins/$(DEPDIR) src/protocol/$(DEPDIR) src/queue/$(DEPDIR) src/sticker/$(DEPDIR) src/storage/$(DEPDIR) src/storage/plugins/$(DEPDIR) src/system/$(DEPDIR) src/tag/$(DEPDIR) src/thread/$(DEPDIR) src/unix/$(DEPDIR) src/util/$(DEPDIR) src/win32/$(DEPDIR) src/zeroconf/$(DEPDIR) test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -14201,8 +14174,8 @@ src/win32/mpd_win32_rc.$(OBJEXT): src/win32/mpd_win32_rc.rc $(WINDRES) -i $< -o $@ -@ENABLE_DOCUMENTATION_TRUE@@HAVE_XMLTO_TRUE@$(DOCBOOK_HTML): %/index.html: %.xml -@ENABLE_DOCUMENTATION_TRUE@@HAVE_XMLTO_TRUE@ $(XMLTO) -o $(@D) --stringparam chunker.output.encoding=utf-8 html --stringparam use.id.as.filename=1 $< +@ENABLE_DOCUMENTATION_TRUE@$(DOCBOOK_HTML): %/index.html: %.xml +@ENABLE_DOCUMENTATION_TRUE@ $(XMLTO) -o $(@D) --stringparam chunker.output.encoding=utf-8 html --stringparam use.id.as.filename=1 $< @ENABLE_DOCUMENTATION_TRUE@doc/api/html/index.html: doc/doxygen.conf @ENABLE_DOCUMENTATION_TRUE@ @$(MKDIR_P) $(@D) diff -Nru mpd-0.19.1/NEWS mpd-0.19.2/NEWS --- mpd-0.19.1/NEWS 2014-10-19 01:03:36.000000000 +0200 +++ mpd-0.19.2/NEWS 2014-11-02 13:46:47.000000000 +0100 @@ -1,3 +1,21 @@ +ver 0.19.2 (2014/11/02) +* input + - curl: fix redirected streams +* playlist + - don't allow empty playlist name + - m3u: don't ignore unterminated last line + - m3u: recognize the file suffix ".m3u8" +* decoder + - ignore URI query string for plugin detection + - faad: remove workaround for ancient libfaad2 ABI bug + - ffmpeg: recognize MIME type audio/aacp + - mad: fix negative replay gain values +* output + - fix memory leak after filter initialization error + - fall back to PCM if given DSD sample rate is not supported +* fix assertion failure on unsupported PCM conversion +* auto-disable plugins that require GLib when --disable-glib is used + ver 0.19.1 (2014/10/19) * input - mms: fix deadlock bug @@ -85,6 +103,15 @@ * install systemd unit for socket activation * Android port +ver 0.18.17 (2014/11/02) +* playlist + - don't allow empty playlist name + - m3u: recognize the file suffix ".m3u8" +* decoder + - ignore URI query string for plugin detection + - faad: remove workaround for ancient libfaad2 ABI bug + - ffmpeg: recognize MIME type audio/aacp + ver 0.18.16 (2014/09/26) * fix DSD breakage due to typo in configure.ac diff -Nru mpd-0.19.1/src/decoder/DecoderThread.cxx mpd-0.19.2/src/decoder/DecoderThread.cxx --- mpd-0.19.1/src/decoder/DecoderThread.cxx 2014-10-02 21:55:44.000000000 +0200 +++ mpd-0.19.2/src/decoder/DecoderThread.cxx 2014-11-01 13:47:41.000000000 +0100 @@ -237,7 +237,8 @@ decoder_run_stream_locked(Decoder &decoder, InputStream &is, const char *uri, bool &tried_r) { - const char *const suffix = uri_get_suffix(uri); + UriSuffixBuffer suffix_buffer; + const char *const suffix = uri_get_suffix(uri, suffix_buffer); using namespace std::placeholders; const auto f = std::bind(decoder_run_stream_plugin, diff -Nru mpd-0.19.1/src/decoder/plugins/FaadDecoderPlugin.cxx mpd-0.19.2/src/decoder/plugins/FaadDecoderPlugin.cxx --- mpd-0.19.1/src/decoder/plugins/FaadDecoderPlugin.cxx 2014-09-24 18:56:53.000000000 +0200 +++ mpd-0.19.2/src/decoder/plugins/FaadDecoderPlugin.cxx 2014-11-02 12:27:38.000000000 +0100 @@ -255,20 +255,12 @@ } uint8_t channels; - uint32_t sample_rate; -#ifdef HAVE_FAAD_LONG - /* neaacdec.h declares all arguments as "unsigned long", but - internally expects uint32_t pointers. To avoid gcc - warnings, use this workaround. */ - unsigned long *sample_rate_p = (unsigned long *)(void *)&sample_rate; -#else - uint32_t *sample_rate_p = &sample_rate; -#endif + unsigned long sample_rate; long nbytes = NeAACDecInit(decoder, /* deconst hack, libfaad requires this */ const_cast<unsigned char *>(data.data), data.size, - sample_rate_p, &channels); + &sample_rate, &channels); if (nbytes < 0) { error.Set(faad_decoder_domain, "Not an AAC stream"); return false; diff -Nru mpd-0.19.1/src/decoder/plugins/FfmpegDecoderPlugin.cxx mpd-0.19.2/src/decoder/plugins/FfmpegDecoderPlugin.cxx --- mpd-0.19.1/src/decoder/plugins/FfmpegDecoderPlugin.cxx 2014-09-11 19:24:55.000000000 +0200 +++ mpd-0.19.2/src/decoder/plugins/FfmpegDecoderPlugin.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -680,6 +680,7 @@ "audio/8svx", "audio/16sv", "audio/aac", + "audio/aacp", "audio/ac3", "audio/aiff" "audio/amr", diff -Nru mpd-0.19.1/src/decoder/plugins/MadDecoderPlugin.cxx mpd-0.19.2/src/decoder/plugins/MadDecoderPlugin.cxx --- mpd-0.19.1/src/decoder/plugins/MadDecoderPlugin.cxx 2014-09-24 22:42:53.000000000 +0200 +++ mpd-0.19.2/src/decoder/plugins/MadDecoderPlugin.cxx 2014-10-28 22:21:39.000000000 +0100 @@ -657,7 +657,7 @@ unsigned name = mad_bit_read(ptr, 3); /* gain name */ unsigned orig = mad_bit_read(ptr, 3); /* gain originator */ unsigned sign = mad_bit_read(ptr, 1); /* sign bit */ - unsigned gain = mad_bit_read(ptr, 9); /* gain*10 */ + int gain = mad_bit_read(ptr, 9); /* gain*10 */ if (gain && name == 1 && orig != 0) { lame->track_gain = ((sign ? -gain : gain) / 10.0) + adj; FormatDebug(mad_domain, "LAME track gain found: %f", diff -Nru mpd-0.19.1/src/decoder/plugins/Mp4v2DecoderPlugin.cxx mpd-0.19.2/src/decoder/plugins/Mp4v2DecoderPlugin.cxx --- mpd-0.19.1/src/decoder/plugins/Mp4v2DecoderPlugin.cxx 2014-09-24 23:28:54.000000000 +0200 +++ mpd-0.19.2/src/decoder/plugins/Mp4v2DecoderPlugin.cxx 2014-10-25 20:44:08.000000000 +0200 @@ -39,15 +39,7 @@ mp4_get_aac_track(MP4FileHandle handle, NeAACDecHandle decoder, AudioFormat &audio_format, Error &error) { - uint32_t sample_rate; -#ifdef HAVE_FAAD_LONG - /* neaacdec.h declares all arguments as "unsigned long", but - internally expects uint32_t pointers. To avoid gcc - warnings, use this workaround. */ - unsigned long *sample_rate_r = (unsigned long*)&sample_rate; -#else - uint32_t *sample_rate_r = sample_rate; -#endif + unsigned long sample_rate; const MP4TrackId tracks = MP4GetNumberOfTracks(handle); @@ -80,7 +72,7 @@ uint8_t channels; int32_t nbytes = NeAACDecInit(decoder, buff, buff_size, - sample_rate_r, &channels); + &sample_rate, &channels); free(buff); diff -Nru mpd-0.19.1/src/fs/Charset.cxx mpd-0.19.2/src/fs/Charset.cxx --- mpd-0.19.1/src/fs/Charset.cxx 2014-02-23 22:03:40.000000000 +0100 +++ mpd-0.19.2/src/fs/Charset.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -34,6 +34,8 @@ #include <assert.h> #include <string.h> +#ifdef HAVE_GLIB + /** * Maximal number of bytes required to represent path name in UTF-8 * (including nul-terminator). @@ -44,7 +46,6 @@ */ static constexpr size_t MPD_PATH_MAX_UTF8 = (MPD_PATH_MAX - 1) * 4 + 1; -#ifdef HAVE_GLIB static std::string fs_charset; gcc_pure diff -Nru mpd-0.19.1/src/input/AsyncInputStream.hxx mpd-0.19.2/src/input/AsyncInputStream.hxx --- mpd-0.19.1/src/input/AsyncInputStream.hxx 2014-09-02 21:36:20.000000000 +0200 +++ mpd-0.19.2/src/input/AsyncInputStream.hxx 2014-11-02 13:00:04.000000000 +0100 @@ -83,6 +83,10 @@ */ void SetTag(Tag *_tag); + void ClearTag() { + SetTag(nullptr); + } + void Pause(); bool IsPaused() const { diff -Nru mpd-0.19.1/src/input/InputStream.hxx mpd-0.19.2/src/input/InputStream.hxx --- mpd-0.19.1/src/input/InputStream.hxx 2014-10-11 21:59:12.000000000 +0200 +++ mpd-0.19.2/src/input/InputStream.hxx 2014-11-02 12:59:08.000000000 +0100 @@ -200,6 +200,10 @@ return mime.empty() ? nullptr : mime.c_str(); } + void ClearMimeType() { + mime.clear(); + } + gcc_nonnull_all void SetMimeType(const char *_mime) { assert(!ready); diff -Nru mpd-0.19.1/src/input/plugins/CurlInputPlugin.cxx mpd-0.19.2/src/input/plugins/CurlInputPlugin.cxx --- mpd-0.19.1/src/input/plugins/CurlInputPlugin.cxx 2014-09-16 18:40:37.000000000 +0200 +++ mpd-0.19.2/src/input/plugins/CurlInputPlugin.cxx 2014-11-02 13:04:28.000000000 +0100 @@ -109,6 +109,13 @@ */ void FreeEasyIndirect(); + /** + * Called when a new response begins. This is used to discard + * headers from previous responses (for example authentication + * and redirects). + */ + void ResponseBoundary(); + void HeaderReceived(const char *name, std::string &&value); size_t DataReceived(const void *ptr, size_t size); @@ -598,6 +605,20 @@ } inline void +CurlInputStream::ResponseBoundary() +{ + /* undo all effects of HeaderReceived() because the previous + response was not applicable for this stream */ + + seekable = false; + size = UNKNOWN_SIZE; + ClearMimeType(); + ClearTag(); + + // TODO: reset the IcyInputStream? +} + +inline void CurlInputStream::HeaderReceived(const char *name, std::string &&value) { if (IsSeekPending()) @@ -645,6 +666,11 @@ size *= nmemb; const char *header = (const char *)ptr; + if (size > 5 && memcmp(header, "HTTP/", 5) == 0) { + c.ResponseBoundary(); + return size; + } + const char *end = header + size; char name[64]; @@ -720,10 +746,10 @@ input_curl_writefunction); curl_easy_setopt(easy, CURLOPT_WRITEDATA, this); curl_easy_setopt(easy, CURLOPT_HTTP200ALIASES, http_200_aliases); - curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1); - curl_easy_setopt(easy, CURLOPT_NETRC, 1); - curl_easy_setopt(easy, CURLOPT_MAXREDIRS, 5); - curl_easy_setopt(easy, CURLOPT_FAILONERROR, true); + curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1l); + curl_easy_setopt(easy, CURLOPT_NETRC, 1l); + curl_easy_setopt(easy, CURLOPT_MAXREDIRS, 5l); + curl_easy_setopt(easy, CURLOPT_FAILONERROR, 1l); curl_easy_setopt(easy, CURLOPT_ERRORBUFFER, error_buffer); curl_easy_setopt(easy, CURLOPT_NOPROGRESS, 1l); curl_easy_setopt(easy, CURLOPT_NOSIGNAL, 1l); diff -Nru mpd-0.19.1/src/input/TextInputStream.cxx mpd-0.19.2/src/input/TextInputStream.cxx --- mpd-0.19.1/src/input/TextInputStream.cxx 2014-10-19 00:49:40.000000000 +0200 +++ mpd-0.19.2/src/input/TextInputStream.cxx 2014-10-28 21:59:55.000000000 +0100 @@ -38,8 +38,8 @@ while (true) { auto dest = buffer.Write(); if (dest.size < 2) { - /* end of file (or line too long): terminate - the current line */ + /* line too long: terminate the current + line */ assert(!dest.IsEmpty()); dest[0] = 0; @@ -66,7 +66,19 @@ if (line != nullptr) return line; - if (nbytes == 0) - return nullptr; + if (nbytes == 0) { + /* end of file: see if there's an unterminated + line */ + + dest = buffer.Write(); + assert(!dest.IsEmpty()); + dest[0] = 0; + + auto r = buffer.Read(); + buffer.Clear(); + return r.IsEmpty() + ? nullptr + : r.data; + } } } diff -Nru mpd-0.19.1/src/lib/upnp/Discovery.cxx mpd-0.19.2/src/lib/upnp/Discovery.cxx --- mpd-0.19.1/src/lib/upnp/Discovery.cxx 2014-01-26 15:58:26.000000000 +0100 +++ mpd-0.19.2/src/lib/upnp/Discovery.cxx 2014-11-02 11:05:52.000000000 +0100 @@ -26,6 +26,7 @@ #include <upnp/upnptools.h> +#include <stdlib.h> #include <string.h> // The service type string we are looking for. diff -Nru mpd-0.19.1/src/Main.cxx mpd-0.19.2/src/Main.cxx --- mpd-0.19.1/src/Main.cxx 2014-10-10 19:45:56.000000000 +0200 +++ mpd-0.19.2/src/Main.cxx 2014-11-01 13:47:41.000000000 +0100 @@ -114,6 +114,10 @@ #include <ws2tcpip.h> #endif +#ifdef __APPLE__ +#include <dispatch/dispatch.h> +#endif + #include <limits.h> static constexpr unsigned DEFAULT_BUFFER_SIZE = 4096; @@ -401,8 +405,6 @@ { #ifdef WIN32 return win32_main(argc, argv); -#elif __APPLE__ - return osx_main(argc, argv); #else return mpd_main(argc, argv); #endif @@ -410,6 +412,8 @@ #endif +static int mpd_main_after_fork(struct options); + #ifdef ANDROID static inline #endif @@ -513,6 +517,27 @@ daemonize_begin(options.daemon); #endif +#ifdef __APPLE__ + /* Runs the OS X native event loop in the main thread, and runs + the rest of mpd_main on a new thread. This lets CoreAudio receive + route change notifications (e.g. plugging or unplugging headphones). + All hardware output on OS X ultimately uses CoreAudio internally. + This must be run after forking; if dispatch is called before forking, + the child process will have a broken internal dispatch state. */ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + exit(mpd_main_after_fork(options)); + }); + dispatch_main(); + return EXIT_FAILURE; // unreachable, because dispatch_main never returns +#else + return mpd_main_after_fork(options); +#endif +} + +static int mpd_main_after_fork(struct options options) +{ + Error error; + GlobalEvents::Initialize(*instance->event_loop); GlobalEvents::Register(GlobalEvents::IDLE, idle_event_emitted); #ifdef WIN32 diff -Nru mpd-0.19.1/src/Main.hxx mpd-0.19.2/src/Main.hxx --- mpd-0.19.1/src/Main.hxx 2014-10-10 19:45:56.000000000 +0200 +++ mpd-0.19.2/src/Main.hxx 2014-11-01 13:47:41.000000000 +0100 @@ -75,15 +75,4 @@ #endif -#ifdef __APPLE__ - -/* Runs the OS X native event loop in the main thread, and runs - * mpd_main on a new thread. This lets CoreAudio receive route - * change notifications (e.g. plugging or unplugging headphones). - * All hardware output on OS X ultimately uses CoreAudio internally. - */ -int osx_main(int argc, char *argv[]); - -#endif - #endif diff -Nru mpd-0.19.1/src/osx/OSXMain.cxx mpd-0.19.2/src/osx/OSXMain.cxx --- mpd-0.19.1/src/osx/OSXMain.cxx 2014-10-10 19:45:56.000000000 +0200 +++ mpd-0.19.2/src/osx/OSXMain.cxx 1970-01-01 01:00:00.000000000 +0100 @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2003-2014 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" -#include "Main.hxx" - -#ifdef __APPLE__ - -#include <stdlib.h> -#include <dispatch/dispatch.h> - -int osx_main(int argc, char *argv[]) -{ - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - exit(mpd_main(argc, argv)); - }); - dispatch_main(); - return EXIT_FAILURE; // unreachable, because dispatch_main never returns -} - -#endif diff -Nru mpd-0.19.1/src/output/Internal.hxx mpd-0.19.2/src/output/Internal.hxx --- mpd-0.19.1/src/output/Internal.hxx 2014-08-12 16:00:27.000000000 +0200 +++ mpd-0.19.2/src/output/Internal.hxx 2014-10-25 22:05:37.000000000 +0200 @@ -383,7 +383,12 @@ void Reopen(); AudioFormat OpenFilter(AudioFormat &format, Error &error_r); + + /** + * Mutex must not be locked. + */ void CloseFilter(); + void ReopenFilter(); /** diff -Nru mpd-0.19.1/src/output/OutputThread.cxx mpd-0.19.2/src/output/OutputThread.cxx --- mpd-0.19.1/src/output/OutputThread.cxx 2014-09-24 21:47:32.000000000 +0200 +++ mpd-0.19.2/src/output/OutputThread.cxx 2014-10-25 22:14:04.000000000 +0200 @@ -22,6 +22,7 @@ #include "OutputAPI.hxx" #include "Domain.hxx" #include "pcm/PcmMix.hxx" +#include "pcm/Domain.hxx" #include "notify.hxx" #include "filter/FilterInternal.hxx" #include "filter/plugins/ConvertFilterPlugin.hxx" @@ -165,6 +166,10 @@ out_audio_format.ApplyMask(config_audio_format); mutex.unlock(); + + const AudioFormat retry_audio_format = out_audio_format; + + retry_without_dsd: success = ao_plugin_open(this, out_audio_format, error); mutex.lock(); @@ -174,7 +179,10 @@ FormatError(error, "Failed to open \"%s\" [%s]", name, plugin.name); + mutex.unlock(); CloseFilter(); + mutex.lock(); + fail_timer.Update(); return; } @@ -184,7 +192,36 @@ FormatError(error, "Failed to convert for \"%s\" [%s]", name, plugin.name); + mutex.unlock(); + ao_plugin_close(this); + + if (error.IsDomain(pcm_domain) && + out_audio_format.format == SampleFormat::DSD) { + /* if the audio output supports DSD, but not + the given sample rate, it asks MPD to + resample; resampling DSD however is not + implemented; our last resort is to give up + DSD and fall back to PCM */ + + // TODO: clean up this workaround + + FormatError(output_domain, "Retrying without DSD"); + + out_audio_format = retry_audio_format; + out_audio_format.format = SampleFormat::FLOAT; + + /* clear the Error to allow reusing it */ + error.Clear(); + + /* sorry for the "goto" - this is a workaround + for the stable branch that should be as + unintrusive as possible */ + goto retry_without_dsd; + } + CloseFilter(); + mutex.lock(); + fail_timer.Update(); return; } @@ -233,7 +270,10 @@ { Error error; + mutex.unlock(); CloseFilter(); + mutex.lock(); + const AudioFormat filter_audio_format = OpenFilter(in_audio_format, error); if (!filter_audio_format.IsDefined() || diff -Nru mpd-0.19.1/src/output/plugins/RoarOutputPlugin.cxx mpd-0.19.2/src/output/plugins/RoarOutputPlugin.cxx --- mpd-0.19.1/src/output/plugins/RoarOutputPlugin.cxx 2014-09-28 13:24:40.000000000 +0200 +++ mpd-0.19.2/src/output/plugins/RoarOutputPlugin.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -46,7 +46,7 @@ struct roar_connection con; struct roar_audio_info info; mutable Mutex mutex; - volatile bool alive; + bool alive; public: RoarOutput() diff -Nru mpd-0.19.1/src/pcm/ChannelsConverter.cxx mpd-0.19.2/src/pcm/ChannelsConverter.cxx --- mpd-0.19.1/src/pcm/ChannelsConverter.cxx 2014-01-24 00:22:50.000000000 +0100 +++ mpd-0.19.2/src/pcm/ChannelsConverter.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -43,7 +43,7 @@ default: error.Format(pcm_domain, "PCM channel conversion for %s is not implemented", - sample_format_to_string(format)); + sample_format_to_string(_format)); return false; } diff -Nru mpd-0.19.1/src/pcm/FormatConverter.cxx mpd-0.19.2/src/pcm/FormatConverter.cxx --- mpd-0.19.1/src/pcm/FormatConverter.cxx 2014-01-24 00:22:50.000000000 +0100 +++ mpd-0.19.2/src/pcm/FormatConverter.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -28,11 +28,31 @@ bool PcmFormatConverter::Open(SampleFormat _src_format, SampleFormat _dest_format, - gcc_unused Error &error) + Error &error) { assert(_src_format != SampleFormat::UNDEFINED); assert(_dest_format != SampleFormat::UNDEFINED); + switch (_dest_format) { + case SampleFormat::UNDEFINED: + assert(false); + gcc_unreachable(); + + case SampleFormat::S8: + case SampleFormat::DSD: + error.Format(pcm_domain, + "PCM conversion from %s to %s is not implemented", + sample_format_to_string(_src_format), + sample_format_to_string(_dest_format)); + return nullptr; + + case SampleFormat::S16: + case SampleFormat::S24_P32: + case SampleFormat::S32: + case SampleFormat::FLOAT: + break; + } + src_format = _src_format; dest_format = _dest_format; return true; @@ -48,20 +68,14 @@ } ConstBuffer<void> -PcmFormatConverter::Convert(ConstBuffer<void> src, Error &error) +PcmFormatConverter::Convert(ConstBuffer<void> src, gcc_unused Error &error) { switch (dest_format) { case SampleFormat::UNDEFINED: - assert(false); - gcc_unreachable(); - case SampleFormat::S8: case SampleFormat::DSD: - error.Format(pcm_domain, - "PCM conversion from %s to %s is not implemented", - sample_format_to_string(src_format), - sample_format_to_string(dest_format)); - return nullptr; + assert(false); + gcc_unreachable(); case SampleFormat::S16: return pcm_convert_to_16(buffer, dither, diff -Nru mpd-0.19.1/src/pcm/PcmConvert.cxx mpd-0.19.2/src/pcm/PcmConvert.cxx --- mpd-0.19.1/src/pcm/PcmConvert.cxx 2014-09-26 12:17:58.000000000 +0200 +++ mpd-0.19.2/src/pcm/PcmConvert.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -51,7 +51,7 @@ } bool -PcmConvert::Open(AudioFormat _src_format, AudioFormat _dest_format, +PcmConvert::Open(const AudioFormat _src_format, const AudioFormat _dest_format, Error &error) { assert(!src_format.IsValid()); @@ -59,36 +59,34 @@ assert(_src_format.IsValid()); assert(_dest_format.IsValid()); - src_format = _src_format; - dest_format = _dest_format; - - AudioFormat format = src_format; + AudioFormat format = _src_format; if (format.format == SampleFormat::DSD) format.format = SampleFormat::FLOAT; - enable_resampler = format.sample_rate != dest_format.sample_rate; + enable_resampler = format.sample_rate != _dest_format.sample_rate; if (enable_resampler) { - if (!resampler.Open(format, dest_format.sample_rate, error)) + if (!resampler.Open(format, _dest_format.sample_rate, error)) return false; format.format = resampler.GetOutputSampleFormat(); - format.sample_rate = dest_format.sample_rate; + format.sample_rate = _dest_format.sample_rate; } - enable_format = format.format != dest_format.format; + enable_format = format.format != _dest_format.format; if (enable_format && - !format_converter.Open(format.format, dest_format.format, error)) { + !format_converter.Open(format.format, _dest_format.format, + error)) { if (enable_resampler) resampler.Close(); return false; } - format.format = dest_format.format; + format.format = _dest_format.format; - enable_channels = format.channels != dest_format.channels; + enable_channels = format.channels != _dest_format.channels; if (enable_channels && !channels_converter.Open(format.format, format.channels, - dest_format.channels, error)) { + _dest_format.channels, error)) { if (enable_format) format_converter.Close(); if (enable_resampler) @@ -96,6 +94,9 @@ return false; } + src_format = _src_format; + dest_format = _dest_format; + return true; } diff -Nru mpd-0.19.1/src/playlist/PlaylistRegistry.cxx mpd-0.19.2/src/playlist/PlaylistRegistry.cxx --- mpd-0.19.1/src/playlist/PlaylistRegistry.cxx 2014-05-12 18:59:46.000000000 +0200 +++ mpd-0.19.2/src/playlist/PlaylistRegistry.cxx 2014-11-02 12:27:11.000000000 +0100 @@ -139,12 +139,12 @@ playlist_list_open_uri_suffix(const char *uri, Mutex &mutex, Cond &cond, const bool *tried) { - const char *suffix; SongEnumerator *playlist = nullptr; assert(uri != nullptr); - suffix = uri_get_suffix(uri); + UriSuffixBuffer suffix_buffer; + const char *const suffix = uri_get_suffix(uri, suffix_buffer); if (suffix == nullptr) return nullptr; @@ -257,7 +257,10 @@ return playlist; } - const char *suffix = uri != nullptr ? uri_get_suffix(uri) : nullptr; + UriSuffixBuffer suffix_buffer; + const char *suffix = uri != nullptr + ? uri_get_suffix(uri, suffix_buffer) + : nullptr; if (suffix != nullptr) { auto playlist = playlist_list_open_stream_suffix(is, suffix); if (playlist != nullptr) diff -Nru mpd-0.19.1/src/playlist/plugins/ExtM3uPlaylistPlugin.cxx mpd-0.19.2/src/playlist/plugins/ExtM3uPlaylistPlugin.cxx --- mpd-0.19.1/src/playlist/plugins/ExtM3uPlaylistPlugin.cxx 2014-10-19 00:37:35.000000000 +0200 +++ mpd-0.19.2/src/playlist/plugins/ExtM3uPlaylistPlugin.cxx 2014-10-26 08:12:28.000000000 +0100 @@ -130,6 +130,7 @@ static const char *const extm3u_suffixes[] = { "m3u", + "m3u8", nullptr }; diff -Nru mpd-0.19.1/src/playlist/plugins/M3uPlaylistPlugin.cxx mpd-0.19.2/src/playlist/plugins/M3uPlaylistPlugin.cxx --- mpd-0.19.1/src/playlist/plugins/M3uPlaylistPlugin.cxx 2014-08-07 16:53:20.000000000 +0200 +++ mpd-0.19.2/src/playlist/plugins/M3uPlaylistPlugin.cxx 2014-10-26 08:12:22.000000000 +0100 @@ -60,6 +60,7 @@ static const char *const m3u_suffixes[] = { "m3u", + "m3u8", nullptr }; diff -Nru mpd-0.19.1/src/PlaylistFile.cxx mpd-0.19.2/src/PlaylistFile.cxx --- mpd-0.19.1/src/PlaylistFile.cxx 2014-08-07 19:35:50.000000000 +0200 +++ mpd-0.19.2/src/PlaylistFile.cxx 2014-11-02 12:26:15.000000000 +0100 @@ -64,6 +64,10 @@ bool spl_valid_name(const char *name_utf8) { + if (*name_utf8 == 0) + /* empty name not allowed */ + return false; + /* * Not supporting '/' was done out of laziness, and we should * really strive to support it in the future. diff -Nru mpd-0.19.1/src/TagStream.cxx mpd-0.19.2/src/TagStream.cxx --- mpd-0.19.1/src/TagStream.cxx 2014-05-11 17:03:06.000000000 +0200 +++ mpd-0.19.2/src/TagStream.cxx 2014-11-01 13:47:41.000000000 +0100 @@ -46,7 +46,8 @@ { assert(is.IsReady()); - const char *const suffix = uri_get_suffix(is.GetURI()); + UriSuffixBuffer suffix_buffer; + const char *const suffix = uri_get_suffix(is.GetURI(), suffix_buffer); const char *const mime = is.GetMimeType(); if (suffix == nullptr && mime == nullptr) diff -Nru mpd-0.19.1/src/util/UriUtil.cxx mpd-0.19.2/src/util/UriUtil.cxx --- mpd-0.19.1/src/util/UriUtil.cxx 2014-10-10 22:43:40.000000000 +0200 +++ mpd-0.19.2/src/util/UriUtil.cxx 2014-11-02 12:26:15.000000000 +0100 @@ -54,6 +54,23 @@ return suffix; } +const char * +uri_get_suffix(const char *uri, UriSuffixBuffer &buffer) +{ + const char *suffix = uri_get_suffix(uri); + if (suffix == nullptr) + return nullptr; + + const char *q = strchr(suffix, '?'); + if (q != nullptr && size_t(q - suffix) < sizeof(buffer.data)) { + memcpy(buffer.data, suffix, q - suffix); + buffer.data[q - suffix] = 0; + suffix = buffer.data; + } + + return suffix; +} + static const char * verify_uri_segment(const char *p) { diff -Nru mpd-0.19.1/src/util/UriUtil.hxx mpd-0.19.2/src/util/UriUtil.hxx --- mpd-0.19.1/src/util/UriUtil.hxx 2014-10-10 22:43:40.000000000 +0200 +++ mpd-0.19.2/src/util/UriUtil.hxx 2014-11-02 12:26:15.000000000 +0100 @@ -42,6 +42,17 @@ const char * uri_get_suffix(const char *uri); +struct UriSuffixBuffer { + char data[8]; +}; + +/** + * Returns the file name suffix, ignoring the query string. + */ +gcc_pure +const char * +uri_get_suffix(const char *uri, UriSuffixBuffer &buffer); + /** * Returns true if this is a safe "local" URI: * diff -Nru mpd-0.19.1/test/DumpDatabase.cxx mpd-0.19.2/test/DumpDatabase.cxx --- mpd-0.19.1/test/DumpDatabase.cxx 2014-02-23 19:55:27.000000000 +0100 +++ mpd-0.19.2/test/DumpDatabase.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -33,7 +33,9 @@ #include "event/Loop.hxx" #include "util/Error.hxx" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <iostream> using std::cout; @@ -107,9 +109,11 @@ /* initialize GLib */ +#ifdef HAVE_GLIB #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init(nullptr); #endif +#endif /* initialize MPD */ diff -Nru mpd-0.19.1/test/read_mixer.cxx mpd-0.19.2/test/read_mixer.cxx --- mpd-0.19.1/test/read_mixer.cxx 2014-02-19 21:59:25.000000000 +0100 +++ mpd-0.19.2/test/read_mixer.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -28,7 +28,9 @@ #include "util/Error.hxx" #include "Log.hxx" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <assert.h> #include <string.h> @@ -50,9 +52,11 @@ return EXIT_FAILURE; } +#ifdef HAVE_GLIB #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init(NULL); #endif +#endif EventLoop event_loop; diff -Nru mpd-0.19.1/test/test_archive.cxx mpd-0.19.2/test/test_archive.cxx --- mpd-0.19.1/test/test_archive.cxx 2014-01-24 09:49:05.000000000 +0100 +++ mpd-0.19.2/test/test_archive.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -7,8 +7,6 @@ #include <cppunit/ui/text/TestRunner.h> #include <cppunit/extensions/HelperMacros.h> -#include <glib.h> - #include <string.h> #include <stdlib.h> @@ -29,22 +27,22 @@ char *path = strdup(""); CPPUNIT_ASSERT_EQUAL(false, archive_lookup(path, &archive, &inpath, &suffix)); - g_free(path); + free(path); path = strdup("."); CPPUNIT_ASSERT_EQUAL(false, archive_lookup(path, &archive, &inpath, &suffix)); - g_free(path); + free(path); path = strdup("config.h"); CPPUNIT_ASSERT_EQUAL(false, archive_lookup(path, &archive, &inpath, &suffix)); - g_free(path); + free(path); path = strdup("src/foo/bar"); CPPUNIT_ASSERT_EQUAL(false, archive_lookup(path, &archive, &inpath, &suffix)); - g_free(path); + free(path); path = strdup("Makefile/foo/bar"); CPPUNIT_ASSERT_EQUAL(true, @@ -53,7 +51,7 @@ CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "Makefile")); CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar")); CPPUNIT_ASSERT_EQUAL((const char *)nullptr, suffix); - g_free(path); + free(path); path = strdup("config.h/foo/bar"); CPPUNIT_ASSERT_EQUAL(true, @@ -62,7 +60,7 @@ CPPUNIT_ASSERT_EQUAL(0, strcmp(archive, "config.h")); CPPUNIT_ASSERT_EQUAL(0, strcmp(inpath, "foo/bar")); CPPUNIT_ASSERT_EQUAL(0, strcmp(suffix, "h")); - g_free(path); + free(path); } CPPUNIT_TEST_SUITE_REGISTRATION(ArchiveLookupTest); diff -Nru mpd-0.19.1/test/test_util.cxx mpd-0.19.2/test/test_util.cxx --- mpd-0.19.1/test/test_util.cxx 2014-10-10 22:40:13.000000000 +0200 +++ mpd-0.19.2/test/test_util.cxx 2014-11-02 12:26:15.000000000 +0100 @@ -34,6 +34,25 @@ uri_get_suffix(".jpg")); CPPUNIT_ASSERT_EQUAL((const char *)nullptr, uri_get_suffix("/foo/.jpg")); + + /* the first overload does not eliminate the query + string */ + CPPUNIT_ASSERT_EQUAL(0, strcmp(uri_get_suffix("/foo/bar.jpg?query_string"), + "jpg?query_string")); + + /* ... but the second one does */ + UriSuffixBuffer buffer; + CPPUNIT_ASSERT_EQUAL(0, strcmp(uri_get_suffix("/foo/bar.jpg?query_string", + buffer), + "jpg")); + + /* repeat some of the above tests with the second overload */ + CPPUNIT_ASSERT_EQUAL((const char *)nullptr, + uri_get_suffix("/foo/bar", buffer)); + CPPUNIT_ASSERT_EQUAL((const char *)nullptr, + uri_get_suffix("/foo.jpg/bar", buffer)); + CPPUNIT_ASSERT_EQUAL(0, strcmp(uri_get_suffix("/foo/bar.jpg", buffer), + "jpg")); } void TestRemoveAuth() { diff -Nru mpd-0.19.1/test/visit_archive.cxx mpd-0.19.2/test/visit_archive.cxx --- mpd-0.19.1/test/visit_archive.cxx 2014-10-07 20:09:31.000000000 +0200 +++ mpd-0.19.2/test/visit_archive.cxx 2014-10-25 00:28:53.000000000 +0200 @@ -30,7 +30,9 @@ #include "fs/Path.hxx" #include "util/Error.hxx" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <unistd.h> #include <stdlib.h> @@ -57,9 +59,11 @@ /* initialize GLib */ +#ifdef HAVE_GLIB #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init(NULL); #endif +#endif /* initialize MPD */