[Pkg-mpd-commits] [pkg-mpd] 01/06: Imported Upstream version 0.18.8
Florian Schlichting
fsfs at moszumanska.debian.org
Wed Feb 12 22:07:17 UTC 2014
This is an automated email from the git hooks/post-receive script.
fsfs pushed a commit to branch master
in repository pkg-mpd.
commit a17324af24437ecc7309f8bb8d90eacdf3883062
Author: Florian Schlichting <fsfs at debian.org>
Date: Sun Feb 9 20:35:23 2014 +0100
Imported Upstream version 0.18.8
---
Makefile.am | 11 +++++
Makefile.in | 81 +++++++++++++++++++++++++++++---
NEWS | 12 ++++-
configure | 58 +++++++++++------------
configure.ac | 4 +-
doc/developer.xml | 2 +-
doc/doxygen.conf | 2 +-
doc/user.xml | 45 ++++++++++++++++++
src/IcyMetaDataParser.cxx | 92 ++++++++++++++++++++++++++++---------
src/OutputAPI.hxx | 2 +-
src/Playlist.hxx | 2 +-
src/PlaylistPrint.cxx | 4 +-
src/PlaylistSave.cxx | 2 +-
src/PlaylistSave.hxx | 4 +-
src/Queue.cxx | 50 ++++++++++----------
src/Queue.hxx | 10 ++--
src/QueuePrint.cxx | 12 ++---
src/QueuePrint.hxx | 12 ++---
src/QueueSave.cxx | 4 +-
src/QueueSave.hxx | 6 +--
src/SongFilter.cxx | 2 +-
src/decoder/FfmpegDecoderPlugin.cxx | 16 ++++++-
src/decoder/FfmpegMetaData.hxx | 4 +-
src/tag/TagConfig.cxx | 2 +-
src/util/PeakBuffer.cxx | 5 +-
test/test_icy_parser.cxx | 85 ++++++++++++++++++++++++++++++++++
test/test_queue_priority.cxx | 4 +-
27 files changed, 407 insertions(+), 126 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 7240cb3..c7cf631 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1061,6 +1061,7 @@ C_TESTS = \
test/test_util \
test/test_byte_reverse \
test/test_mixramp \
+ test/test_icy_parser \
test/test_pcm \
test/test_queue_priority
@@ -1496,6 +1497,16 @@ test_test_mixramp_LDADD = \
$(GLIB_LIBS) \
$(CPPUNIT_LIBS)
+test_test_icy_parser_SOURCES = \
+ src/Log.cxx \
+ test/test_icy_parser.cxx
+test_test_icy_parser_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUNIT_CFLAGS) -DCPPUNIT_HAVE_RTTI=0
+test_test_icy_parser_CXXFLAGS = $(AM_CXXFLAGS) -Wno-error=deprecated-declarations
+test_test_icy_parser_LDADD = \
+ libtag.a \
+ $(GLIB_LIBS) \
+ $(CPPUNIT_LIBS)
+
test_test_pcm_SOURCES = \
test/test_pcm_util.hxx \
test/test_pcm_dither.cxx \
diff --git a/Makefile.in b/Makefile.in
index 1bc4463..0b9b6da 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -908,6 +908,7 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
@ENABLE_TEST_TRUE at am__EXEEXT_2 = test/test_util$(EXEEXT) \
@ENABLE_TEST_TRUE@ test/test_byte_reverse$(EXEEXT) \
@ENABLE_TEST_TRUE@ test/test_mixramp$(EXEEXT) \
+ at ENABLE_TEST_TRUE@ test/test_icy_parser$(EXEEXT) \
@ENABLE_TEST_TRUE@ test/test_pcm$(EXEEXT) \
@ENABLE_TEST_TRUE@ test/test_queue_priority$(EXEEXT) \
@ENABLE_TEST_TRUE@ $(am__EXEEXT_1)
@@ -1538,6 +1539,16 @@ test_test_byte_reverse_OBJECTS = $(am_test_test_byte_reverse_OBJECTS)
test_test_byte_reverse_LINK = $(CXXLD) \
$(test_test_byte_reverse_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
+am__test_test_icy_parser_SOURCES_DIST = src/Log.cxx \
+ test/test_icy_parser.cxx
+ at ENABLE_TEST_TRUE@am_test_test_icy_parser_OBJECTS = \
+ at ENABLE_TEST_TRUE@ src/test_test_icy_parser-Log.$(OBJEXT) \
+ at ENABLE_TEST_TRUE@ test/test_test_icy_parser-test_icy_parser.$(OBJEXT)
+test_test_icy_parser_OBJECTS = $(am_test_test_icy_parser_OBJECTS)
+ at ENABLE_TEST_TRUE@test_test_icy_parser_DEPENDENCIES = libtag.a \
+ at ENABLE_TEST_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+test_test_icy_parser_LINK = $(CXXLD) $(test_test_icy_parser_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
am__test_test_mixramp_SOURCES_DIST = src/Log.cxx test/test_mixramp.cxx
@ENABLE_TEST_TRUE at am_test_test_mixramp_OBJECTS = \
@ENABLE_TEST_TRUE@ src/test_test_mixramp-Log.$(OBJEXT) \
@@ -1687,9 +1698,9 @@ SOURCES = $(libarchive_a_SOURCES) $(libconf_a_SOURCES) \
$(test_run_normalize_SOURCES) $(test_run_output_SOURCES) \
$(test_run_resolver_SOURCES) $(test_software_volume_SOURCES) \
$(test_test_archive_SOURCES) $(test_test_byte_reverse_SOURCES) \
- $(test_test_mixramp_SOURCES) $(test_test_pcm_SOURCES) \
- $(test_test_queue_priority_SOURCES) $(test_test_util_SOURCES) \
- $(test_test_vorbis_encoder_SOURCES) \
+ $(test_test_icy_parser_SOURCES) $(test_test_mixramp_SOURCES) \
+ $(test_test_pcm_SOURCES) $(test_test_queue_priority_SOURCES) \
+ $(test_test_util_SOURCES) $(test_test_vorbis_encoder_SOURCES) \
$(test_visit_archive_SOURCES)
DIST_SOURCES = $(am__libarchive_a_SOURCES_DIST) $(libconf_a_SOURCES) \
$(am__libdb_plugins_a_SOURCES_DIST) \
@@ -1726,6 +1737,7 @@ DIST_SOURCES = $(am__libarchive_a_SOURCES_DIST) $(libconf_a_SOURCES) \
$(am__test_software_volume_SOURCES_DIST) \
$(am__test_test_archive_SOURCES_DIST) \
$(am__test_test_byte_reverse_SOURCES_DIST) \
+ $(am__test_test_icy_parser_SOURCES_DIST) \
$(am__test_test_mixramp_SOURCES_DIST) \
$(am__test_test_pcm_SOURCES_DIST) \
$(am__test_test_queue_priority_SOURCES_DIST) \
@@ -2770,8 +2782,9 @@ SPARSE_SRC = $(addprefix $(top_srcdir)/,$(filter %.c,$(src_mpd_SOURCES)))
# Test programs
#
@ENABLE_TEST_TRUE at C_TESTS = test/test_util test/test_byte_reverse \
- at ENABLE_TEST_TRUE@ test/test_mixramp test/test_pcm \
- at ENABLE_TEST_TRUE@ test/test_queue_priority $(am__append_71)
+ at ENABLE_TEST_TRUE@ test/test_mixramp test/test_icy_parser \
+ at ENABLE_TEST_TRUE@ test/test_pcm test/test_queue_priority \
+ at ENABLE_TEST_TRUE@ $(am__append_71)
@ENABLE_TEST_TRUE at test_read_conf_LDADD = \
@ENABLE_TEST_TRUE@ libconf.a \
@ENABLE_TEST_TRUE@ libutil.a \
@@ -3131,6 +3144,17 @@ SPARSE_SRC = $(addprefix $(top_srcdir)/,$(filter %.c,$(src_mpd_SOURCES)))
@ENABLE_TEST_TRUE@ $(GLIB_LIBS) \
@ENABLE_TEST_TRUE@ $(CPPUNIT_LIBS)
+ at ENABLE_TEST_TRUE@test_test_icy_parser_SOURCES = \
+ at ENABLE_TEST_TRUE@ src/Log.cxx \
+ at ENABLE_TEST_TRUE@ test/test_icy_parser.cxx
+
+ at ENABLE_TEST_TRUE@test_test_icy_parser_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUNIT_CFLAGS) -DCPPUNIT_HAVE_RTTI=0
+ at ENABLE_TEST_TRUE@test_test_icy_parser_CXXFLAGS = $(AM_CXXFLAGS) -Wno-error=deprecated-declarations
+ at ENABLE_TEST_TRUE@test_test_icy_parser_LDADD = \
+ at ENABLE_TEST_TRUE@ libtag.a \
+ at ENABLE_TEST_TRUE@ $(GLIB_LIBS) \
+ at ENABLE_TEST_TRUE@ $(CPPUNIT_LIBS)
+
@ENABLE_TEST_TRUE at test_test_pcm_SOURCES = \
@ENABLE_TEST_TRUE@ test/test_pcm_util.hxx \
@ENABLE_TEST_TRUE@ test/test_pcm_dither.cxx \
@@ -4560,6 +4584,14 @@ test/test_test_byte_reverse-test_byte_reverse.$(OBJEXT): \
test/test_byte_reverse$(EXEEXT): $(test_test_byte_reverse_OBJECTS) $(test_test_byte_reverse_DEPENDENCIES) $(EXTRA_test_test_byte_reverse_DEPENDENCIES) test/$(am__dirstamp)
@rm -f test/test_byte_reverse$(EXEEXT)
$(AM_V_CXXLD)$(test_test_byte_reverse_LINK) $(test_test_byte_reverse_OBJECTS) $(test_test_byte_reverse_LDADD) $(LIBS)
+src/test_test_icy_parser-Log.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+test/test_test_icy_parser-test_icy_parser.$(OBJEXT): \
+ test/$(am__dirstamp) test/$(DEPDIR)/$(am__dirstamp)
+
+test/test_icy_parser$(EXEEXT): $(test_test_icy_parser_OBJECTS) $(test_test_icy_parser_DEPENDENCIES) $(EXTRA_test_test_icy_parser_DEPENDENCIES) test/$(am__dirstamp)
+ @rm -f test/test_icy_parser$(EXEEXT)
+ $(AM_V_CXXLD)$(test_test_icy_parser_LINK) $(test_test_icy_parser_OBJECTS) $(test_test_icy_parser_LDADD) $(LIBS)
src/test_test_mixramp-Log.$(OBJEXT): src/$(am__dirstamp) \
src/$(DEPDIR)/$(am__dirstamp)
test/test_test_mixramp-test_mixramp.$(OBJEXT): test/$(am__dirstamp) \
@@ -4852,6 +4884,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_run_avahi-Log.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_run_avahi-ZeroconfAvahi.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_test_archive-Log.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_test_icy_parser-Log.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_test_mixramp-Log.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_test_queue_priority-Queue.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/test_test_vorbis_encoder-AudioFormat.Po at am__quote@
@@ -5078,6 +5111,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_run_avahi-run_avahi.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_archive-test_archive.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_byte_reverse-test_byte_reverse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_mixramp-test_mixramp.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_pcm-test_pcm_channels.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at test/$(DEPDIR)/test_test_pcm-test_pcm_dither.Po at am__quote@
@@ -9253,6 +9287,34 @@ test/test_test_byte_reverse-test_byte_reverse.obj: test/test_byte_reverse.cxx
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_byte_reverse_CPPFLAGS) $(CPPFLAGS) $(test_test_byte_reverse_CXXFLAGS) $(CXXFLAGS) -c -o test/test_test_byte_reverse-test_byte_reverse.obj `if test -f 'test/test_byte_reverse.cxx'; then $(CYGPATH_W) 'test/test_byte_reverse.cxx'; else $(CYGPATH_W) '$(srcdir)/test/test_byte_reverse.cxx'; fi`
+src/test_test_icy_parser-Log.o: src/Log.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -MT src/test_test_icy_parser-Log.o -MD -MP -MF src/$(DEPDIR)/test_test_icy_parser-Log.Tpo -c -o src/test_test_icy_parser-Log.o `test -f 'src/Log.cxx' || echo '$(srcdir)/'`src/Log.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/test_test_icy_parser-Log.Tpo src/$(DEPDIR)/test_test_icy_parser-Log.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Log.cxx' object='src/test_test_icy_parser-Log.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -c -o src/test_test_icy_parser-Log.o `test -f 'src/Log.cxx' || echo '$(srcdir)/'`src/Log.cxx
+
+src/test_test_icy_parser-Log.obj: src/Log.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -MT src/test_test_icy_parser-Log.obj -MD -MP -MF src/$(DEPDIR)/test_test_icy_parser-Log.Tpo -c -o src/test_test_icy_parser-Log.obj `if test -f 'src/Log.cxx'; then $(CYGPATH_W) 'src/Log.cxx'; else $(CYGPATH_W) '$(srcdir)/src/Log.cxx'; fi`
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/test_test_icy_parser-Log.Tpo src/$(DEPDIR)/test_test_icy_parser-Log.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Log.cxx' object='src/test_test_icy_parser-Log.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -c -o src/test_test_icy_parser-Log.obj `if test -f 'src/Log.cxx'; then $(CYGPATH_W) 'src/Log.cxx'; else $(CYGPATH_W) '$(srcdir)/src/Log.cxx'; fi`
+
+test/test_test_icy_parser-test_icy_parser.o: test/test_icy_parser.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -MT test/test_test_icy_parser-test_icy_parser.o -MD -MP -MF test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Tpo -c -o test/test_test_icy_parser-test_icy_parser.o `test -f 'test/test_icy_parser.cxx' || echo '$(srcdir)/'`test/test_icy_parser.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Tpo test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test/test_icy_parser.cxx' object='test/test_test_icy_parser-test_icy_parser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -c -o test/test_test_icy_parser-test_icy_parser.o `test -f 'test/test_icy_parser.cxx' || echo '$(srcdir)/'`test/test_icy_parser.cxx
+
+test/test_test_icy_parser-test_icy_parser.obj: test/test_icy_parser.cxx
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -MT test/test_test_icy_parser-test_icy_parser.obj -MD -MP -MF test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Tpo -c -o test/test_test_icy_parser-test_icy_parser.obj `if test -f 'test/test_icy_parser.cxx'; then $(CYGPATH_W) 'test/test_icy_parser.cxx'; else $(CYGPATH_W) '$(srcdir)/test/test_icy_parser.cxx'; fi`
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Tpo test/$(DEPDIR)/test_test_icy_parser-test_icy_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test/test_icy_parser.cxx' object='test/test_test_icy_parser-test_icy_parser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_icy_parser_CPPFLAGS) $(CPPFLAGS) $(test_test_icy_parser_CXXFLAGS) $(CXXFLAGS) -c -o test/test_test_icy_parser-test_icy_parser.obj `if test -f 'test/test_icy_parser.cxx'; then $(CYGPATH_W) 'test/test_icy_parser.cxx'; else $(CYGPATH_W) '$(srcdir)/test/test_icy_parser.cxx'; fi`
+
src/test_test_mixramp-Log.o: src/Log.cxx
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_test_mixramp_CPPFLAGS) $(CPPFLAGS) $(test_test_mixramp_CXXFLAGS) $(CXXFLAGS) -MT src/test_test_mixramp-Log.o -MD -MP -MF src/$(DEPDIR)/test_test_mixramp-Log.Tpo -c -o src/test_test_mixramp-Log.o `test -f 'src/Log.cxx' || echo '$(srcdir)/'`src/Log.cxx
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/$(DEPDIR)/test_test_mixramp-Log.Tpo src/$(DEPDIR)/test_test_mixramp-Log.Po
@@ -9919,6 +9981,13 @@ test/test_mixramp.log: test/test_mixramp$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+test/test_icy_parser.log: test/test_icy_parser$(EXEEXT)
+ @p='test/test_icy_parser$(EXEEXT)'; \
+ b='test/test_icy_parser'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
test/test_pcm.log: test/test_pcm$(EXEEXT)
@p='test/test_pcm$(EXEEXT)'; \
b='test/test_pcm'; \
@@ -10227,8 +10296,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
- at ENABLE_DOCUMENTATION_FALSE@install-data-local:
@ENABLE_DOCUMENTATION_FALSE at clean-local:
+ at ENABLE_DOCUMENTATION_FALSE@install-data-local:
@ENABLE_DOCUMENTATION_FALSE at uninstall-local:
clean: clean-am
diff --git a/NEWS b/NEWS
index d59f461..066e127 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,14 @@
-ver 0.18.7 (2013/01/13)
+ver 0.18.8 (2014/02/07)
+* decoder
+ - ffmpeg: support libav v10_alpha1
+* encoder
+ - vorbis: fix linker failure
+* output
+ - roar: documentation
+* more robust Icy-Metadata parser
+* fix Solaris build failure
+
+ver 0.18.7 (2014/01/13)
* playlist
- pls: fix crash after parser error
- soundcloud: fix build failure with libyajl 2.0.1
diff --git a/configure b/configure
index 9d83da4..4a9bf41 100755
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mpd 0.18.7.
+# Generated by GNU Autoconf 2.69 for mpd 0.18.8.
#
-# Report bugs to <musicpd-dev-team at lists.sourceforge.net>.
+# Report bugs to <mpd-devel at musicpd.org>.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -267,10 +267,10 @@ fi
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
$as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: musicpd-dev-team at lists.sourceforge.net about your
-$0: system, including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
+$0: mpd-devel at musicpd.org about your system, including any
+$0: error possibly output before this message. Then install
+$0: a modern shell, or manually run the script under such a
+$0: shell if you do have one."
fi
exit 1
fi
@@ -580,9 +580,9 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='mpd'
PACKAGE_TARNAME='mpd'
-PACKAGE_VERSION='0.18.7'
-PACKAGE_STRING='mpd 0.18.7'
-PACKAGE_BUGREPORT='musicpd-dev-team at lists.sourceforge.net'
+PACKAGE_VERSION='0.18.8'
+PACKAGE_STRING='mpd 0.18.8'
+PACKAGE_BUGREPORT='mpd-devel at musicpd.org'
PACKAGE_URL=''
ac_unique_file="src/Main.cxx"
@@ -1673,7 +1673,7 @@ if test "$ac_init_help" = "long"; then
# 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.18.7 to adapt to many kinds of systems.
+\`configure' configures mpd 0.18.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1743,7 +1743,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of mpd 0.18.7:";;
+ short | recursive ) echo "Configuration of mpd 0.18.8:";;
esac
cat <<\_ACEOF
@@ -1978,7 +1978,7 @@ Some influential environment variables:
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
-Report bugs to <musicpd-dev-team at lists.sourceforge.net>.
+Report bugs to <mpd-devel at musicpd.org>.
_ACEOF
ac_status=$?
fi
@@ -2041,7 +2041,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-mpd configure 0.18.7
+mpd configure 0.18.8
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2351,9 +2351,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------------------- ##
-## Report this to musicpd-dev-team at lists.sourceforge.net ##
-## ----------------------------------------------------- ##"
+( $as_echo "## ------------------------------------ ##
+## Report this to mpd-devel at musicpd.org ##
+## ------------------------------------ ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
@@ -2494,7 +2494,7 @@ cat >config.log <<_ACEOF
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.18.7, which was
+It was created by mpd $as_me 0.18.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3364,7 +3364,7 @@ fi
# Define the identity of the package.
PACKAGE='mpd'
- VERSION='0.18.7'
+ VERSION='0.18.8'
cat >>confdefs.h <<_ACEOF
@@ -12864,12 +12864,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBISENC_CFLAGS="$VORBISENC_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbisenc") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBISENC_CFLAGS=`$PKG_CONFIG --cflags "vorbisenc" 2>/dev/null`
+ pkg_cv_VORBISENC_CFLAGS=`$PKG_CONFIG --cflags "vorbisenc vorbis" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12882,12 +12882,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBISENC_LIBS="$VORBISENC_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbisenc") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBISENC_LIBS=`$PKG_CONFIG --libs "vorbisenc" 2>/dev/null`
+ pkg_cv_VORBISENC_LIBS=`$PKG_CONFIG --libs "vorbisenc vorbis" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12906,9 +12906,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- VORBISENC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbisenc"`
+ VORBISENC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbisenc vorbis"`
else
- VORBISENC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbisenc"`
+ VORBISENC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbisenc vorbis"`
fi
# Put the nasty error message in config.log where it belongs
echo "$VORBISENC_PKG_ERRORS" >&5
@@ -18460,7 +18460,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# 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.18.7, which was
+This file was extended by mpd $as_me 0.18.8, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18520,13 +18520,13 @@ $config_headers
Configuration commands:
$config_commands
-Report bugs to <musicpd-dev-team at lists.sourceforge.net>."
+Report bugs to <mpd-devel at musicpd.org>."
_ACEOF
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.18.7
+mpd config.status 0.18.8
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 2cd0c77..301c3a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ(2.60)
-AC_INIT(mpd, 0.18.7, musicpd-dev-team at lists.sourceforge.net)
+AC_INIT(mpd, 0.18.8, mpd-devel at musicpd.org)
VERSION_MAJOR=0
VERSION_MINOR=18
@@ -1139,7 +1139,7 @@ fi
AM_CONDITIONAL(ENABLE_FLAC_ENCODER, test x$enable_flac_encoder = xyes)
dnl ---------------------------- Ogg Vorbis Encoder ---------------------------
-MPD_AUTO_PKG(vorbis_encoder, VORBISENC, [vorbisenc],
+MPD_AUTO_PKG(vorbis_encoder, VORBISENC, [vorbisenc vorbis],
[Ogg Vorbis encoder], [libvorbisenc not found])
if test x$enable_vorbis_encoder = xyes; then
diff --git a/doc/developer.xml b/doc/developer.xml
index e902217..729e6a5 100644
--- a/doc/developer.xml
+++ b/doc/developer.xml
@@ -155,7 +155,7 @@ foo(const char *abc, int xyz)
<para>
Send your patches to the mailing list:
- musicpd-dev-team at lists.sourceforge.net
+ mpd-devel at musicpd.org
</para>
</chapter>
</book>
diff --git a/doc/doxygen.conf b/doc/doxygen.conf
index 361cef3..a93594c 100644
--- a/doc/doxygen.conf
+++ b/doc/doxygen.conf
@@ -31,7 +31,7 @@ PROJECT_NAME = MPD
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 0.18.7
+PROJECT_NUMBER = 0.18.8
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
diff --git a/doc/user.xml b/doc/user.xml
index ccc9e71..6357267 100644
--- a/doc/user.xml
+++ b/doc/user.xml
@@ -1853,6 +1853,51 @@ systemctl start mpd.socket</programlisting>
</section>
<section>
+ <title><varname>roar</varname></title>
+
+ <para>
+ The <varname>roar</varname> plugin connects to a <ulink
+ url="http://roaraudio.keep-cool.org/">RoarAudio</ulink>
+ server.
+ </para>
+
+ <informaltable>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Setting</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <varname>server</varname>
+ <parameter>HOSTNAME</parameter>
+ </entry>
+ <entry>
+ The host name of the RoarAudio server. If not
+ specified, then MPD will connect to the default
+ locations.
+ </entry>
+ </row>
+
+ <row>
+ <entry>
+ <varname>role</varname>
+ <parameter>ROLE</parameter>
+ </entry>
+ <entry>
+ The "role" that MPD registers itself as in the
+ RoarAudio server. The default is "music".
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+
+ <section>
<title><varname>recorder</varname></title>
<para>
diff --git a/src/IcyMetaDataParser.cxx b/src/IcyMetaDataParser.cxx
index 8861efb..bfa2e85 100644
--- a/src/IcyMetaDataParser.cxx
+++ b/src/IcyMetaDataParser.cxx
@@ -81,31 +81,85 @@ icy_add_item(Tag &tag, TagType type, const char *value)
}
static void
-icy_parse_tag_item(Tag &tag, const char *item)
+icy_parse_tag_item(Tag &tag, const char *name, const char *value)
{
- gchar **p = g_strsplit(item, "=", 0);
-
- if (p[0] != nullptr && p[1] != nullptr) {
- if (strcmp(p[0], "StreamTitle") == 0)
- icy_add_item(tag, TAG_TITLE, p[1]);
- else
- FormatDebug(icy_metadata_domain,
- "unknown icy-tag: '%s'", p[0]);
- }
+ if (strcmp(name, "StreamTitle") == 0)
+ icy_add_item(tag, TAG_TITLE, value);
+ else
+ FormatDebug(icy_metadata_domain,
+ "unknown icy-tag: '%s'", name);
+}
+
+/**
+ * Find a single quote that is followed by a semicolon (or by the end
+ * of the string). If that fails, return the first single quote. If
+ * that also fails, return #end.
+ */
+static char *
+find_end_quote(char *p, char *const end)
+{
+ char *fallback = std::find(p, end, '\'');
+ if (fallback >= end - 1 || fallback[1] == ';')
+ return fallback;
- g_strfreev(p);
+ p = fallback + 1;
+ while (true) {
+ p = std::find(p, end, '\'');
+ if (p == end)
+ return fallback;
+
+ if (p == end - 1 || p[1] == ';')
+ return p;
+
+ ++p;
+ }
}
static Tag *
-icy_parse_tag(const char *p)
+icy_parse_tag(char *p, char *const end)
{
+ assert(p != nullptr);
+ assert(end != nullptr);
+ assert(p <= end);
+
Tag *tag = new Tag();
- gchar **items = g_strsplit(p, ";", 0);
- for (unsigned i = 0; items[i] != nullptr; ++i)
- icy_parse_tag_item(*tag, items[i]);
+ while (p != end) {
+ const char *const name = p;
+ char *eq = std::find(p, end, '=');
+ if (eq == end)
+ break;
+
+ *eq = 0;
+ p = eq + 1;
+
+ if (*p != '\'') {
+ /* syntax error; skip to the next semicolon,
+ try to recover */
+ char *semicolon = std::find(p, end, ';');
+ if (semicolon == end)
+ break;
+ p = semicolon + 1;
+ continue;
+ }
+
+ ++p;
+
+ const char *const value = p;
+ char *quote = find_end_quote(p, end);
+ if (quote == end)
+ break;
+
+ *quote = 0;
+ p = quote + 1;
- g_strfreev(items);
+ icy_parse_tag_item(*tag, name, value);
+
+ char *semicolon = std::find(p, end, ';');
+ if (semicolon == end)
+ break;
+ p = semicolon + 1;
+ }
return tag;
}
@@ -152,15 +206,11 @@ IcyMetaDataParser::Meta(const void *data, size_t length)
++length;
if (meta_position == meta_size) {
- /* null-terminate the string */
-
- meta_data[meta_size] = 0;
-
/* parse */
delete tag;
- tag = icy_parse_tag(meta_data);
+ tag = icy_parse_tag(meta_data, meta_data + meta_size);
g_free(meta_data);
/* change back to normal data mode */
diff --git a/src/OutputAPI.hxx b/src/OutputAPI.hxx
index 73cbaf1..e905fd9 100644
--- a/src/OutputAPI.hxx
+++ b/src/OutputAPI.hxx
@@ -18,7 +18,7 @@
*/
#ifndef MPD_OUTPUT_API_HXX
-#define MPD_OUTPUT_API_HxX
+#define MPD_OUTPUT_API_HXX
#include "OutputPlugin.hxx"
#include "OutputInternal.hxx"
diff --git a/src/Playlist.hxx b/src/Playlist.hxx
index 5875ff4..7d7e9b1 100644
--- a/src/Playlist.hxx
+++ b/src/Playlist.hxx
@@ -30,7 +30,7 @@ struct playlist {
/**
* The song queue - it contains the "real" playlist.
*/
- struct queue queue;
+ struct Queue queue;
/**
* This value is true if the player is currently playing (or
diff --git a/src/PlaylistPrint.cxx b/src/PlaylistPrint.cxx
index 8e3beaa..e3d500b 100644
--- a/src/PlaylistPrint.cxx
+++ b/src/PlaylistPrint.cxx
@@ -40,7 +40,7 @@
void
playlist_print_uris(Client &client, const playlist &playlist)
{
- const queue &queue = playlist.queue;
+ const Queue &queue = playlist.queue;
queue_print_uris(client, queue, 0, queue.GetLength());
}
@@ -49,7 +49,7 @@ bool
playlist_print_info(Client &client, const playlist &playlist,
unsigned start, unsigned end)
{
- const queue &queue = playlist.queue;
+ const Queue &queue = playlist.queue;
if (end > queue.GetLength())
/* correct the "end" offset */
diff --git a/src/PlaylistSave.cxx b/src/PlaylistSave.cxx
index 481d9bf..29bf193 100644
--- a/src/PlaylistSave.cxx
+++ b/src/PlaylistSave.cxx
@@ -65,7 +65,7 @@ playlist_print_uri(FILE *file, const char *uri)
}
PlaylistResult
-spl_save_queue(const char *name_utf8, const queue &queue)
+spl_save_queue(const char *name_utf8, const Queue &queue)
{
if (map_spl_path().IsNull())
return PlaylistResult::DISABLED;
diff --git a/src/PlaylistSave.hxx b/src/PlaylistSave.hxx
index 70b40f3..71e0a81 100644
--- a/src/PlaylistSave.hxx
+++ b/src/PlaylistSave.hxx
@@ -25,7 +25,7 @@
#include <stdio.h>
struct Song;
-struct queue;
+struct Queue;
struct playlist;
struct PlayerControl;
class Error;
@@ -40,7 +40,7 @@ playlist_print_uri(FILE *fp, const char *uri);
* Saves a queue object into a stored playlist file.
*/
PlaylistResult
-spl_save_queue(const char *name_utf8, const queue &queue);
+spl_save_queue(const char *name_utf8, const Queue &queue);
/**
* Saves a playlist object into a stored playlist file.
diff --git a/src/Queue.cxx b/src/Queue.cxx
index 4516094..92beefd 100644
--- a/src/Queue.cxx
+++ b/src/Queue.cxx
@@ -23,7 +23,7 @@
#include <stdlib.h>
-queue::queue(unsigned _max_length)
+Queue::Queue(unsigned _max_length)
:max_length(_max_length), length(0),
version(1),
items(new Item[max_length]),
@@ -36,7 +36,7 @@ queue::queue(unsigned _max_length)
{
}
-queue::~queue()
+Queue::~Queue()
{
Clear();
@@ -45,7 +45,7 @@ queue::~queue()
}
int
-queue::GetNextOrder(unsigned _order) const
+Queue::GetNextOrder(unsigned _order) const
{
assert(_order < length);
@@ -62,7 +62,7 @@ queue::GetNextOrder(unsigned _order) const
}
void
-queue::IncrementVersion()
+Queue::IncrementVersion()
{
static unsigned long max = ((uint32_t) 1 << 31) - 1;
@@ -77,7 +77,7 @@ queue::IncrementVersion()
}
void
-queue::ModifyAtOrder(unsigned _order)
+Queue::ModifyAtOrder(unsigned _order)
{
assert(_order < length);
@@ -86,7 +86,7 @@ queue::ModifyAtOrder(unsigned _order)
}
unsigned
-queue::Append(Song *song, uint8_t priority)
+Queue::Append(Song *song, uint8_t priority)
{
assert(!IsFull());
@@ -105,7 +105,7 @@ queue::Append(Song *song, uint8_t priority)
}
void
-queue::SwapPositions(unsigned position1, unsigned position2)
+Queue::SwapPositions(unsigned position1, unsigned position2)
{
unsigned id1 = items[position1].id;
unsigned id2 = items[position2].id;
@@ -120,7 +120,7 @@ queue::SwapPositions(unsigned position1, unsigned position2)
}
void
-queue::MovePostion(unsigned from, unsigned to)
+Queue::MovePostion(unsigned from, unsigned to)
{
const Item tmp = items[from];
@@ -156,7 +156,7 @@ queue::MovePostion(unsigned from, unsigned to)
}
void
-queue::MoveRange(unsigned start, unsigned end, unsigned to)
+Queue::MoveRange(unsigned start, unsigned end, unsigned to)
{
Item tmp[end - start];
// Copy the original block [start,end-1]
@@ -198,7 +198,7 @@ queue::MoveRange(unsigned start, unsigned end, unsigned to)
}
void
-queue::MoveOrder(unsigned from_order, unsigned to_order)
+Queue::MoveOrder(unsigned from_order, unsigned to_order)
{
assert(from_order < length);
assert(to_order <= length);
@@ -217,7 +217,7 @@ queue::MoveOrder(unsigned from_order, unsigned to_order)
}
void
-queue::DeletePosition(unsigned position)
+Queue::DeletePosition(unsigned position)
{
assert(position < length);
@@ -254,7 +254,7 @@ queue::DeletePosition(unsigned position)
}
void
-queue::Clear()
+Queue::Clear()
{
for (unsigned i = 0; i < length; i++) {
Item *item = &items[i];
@@ -270,7 +270,7 @@ queue::Clear()
}
static void
-queue_sort_order_by_priority(struct queue *queue, unsigned start, unsigned end)
+queue_sort_order_by_priority(Queue *queue, unsigned start, unsigned end)
{
assert(queue != nullptr);
assert(queue->random);
@@ -278,8 +278,8 @@ queue_sort_order_by_priority(struct queue *queue, unsigned start, unsigned end)
assert(end <= queue->length);
auto cmp = [queue](unsigned a_pos, unsigned b_pos){
- const queue::Item &a = queue->items[a_pos];
- const queue::Item &b = queue->items[b_pos];
+ const Queue::Item &a = queue->items[a_pos];
+ const Queue::Item &b = queue->items[b_pos];
return a.priority > b.priority;
};
@@ -288,7 +288,7 @@ queue_sort_order_by_priority(struct queue *queue, unsigned start, unsigned end)
}
void
-queue::ShuffleOrderRange(unsigned start, unsigned end)
+Queue::ShuffleOrderRange(unsigned start, unsigned end)
{
assert(random);
assert(start <= end);
@@ -303,7 +303,7 @@ queue::ShuffleOrderRange(unsigned start, unsigned end)
* priority group.
*/
void
-queue::ShuffleOrderRangeWithPriority(unsigned start, unsigned end)
+Queue::ShuffleOrderRangeWithPriority(unsigned start, unsigned end)
{
assert(random);
assert(start <= end);
@@ -337,13 +337,13 @@ queue::ShuffleOrderRangeWithPriority(unsigned start, unsigned end)
}
void
-queue::ShuffleOrder()
+Queue::ShuffleOrder()
{
ShuffleOrderRangeWithPriority(0, length);
}
void
-queue::ShuffleOrderFirst(unsigned start, unsigned end)
+Queue::ShuffleOrderFirst(unsigned start, unsigned end)
{
rand.AutoCreate();
@@ -352,7 +352,7 @@ queue::ShuffleOrderFirst(unsigned start, unsigned end)
}
void
-queue::ShuffleOrderLast(unsigned start, unsigned end)
+Queue::ShuffleOrderLast(unsigned start, unsigned end)
{
rand.AutoCreate();
@@ -361,7 +361,7 @@ queue::ShuffleOrderLast(unsigned start, unsigned end)
}
void
-queue::ShuffleRange(unsigned start, unsigned end)
+Queue::ShuffleRange(unsigned start, unsigned end)
{
assert(start <= end);
assert(end <= length);
@@ -377,7 +377,7 @@ queue::ShuffleRange(unsigned start, unsigned end)
}
unsigned
-queue::FindPriorityOrder(unsigned start_order, uint8_t priority,
+Queue::FindPriorityOrder(unsigned start_order, uint8_t priority,
unsigned exclude_order) const
{
assert(random);
@@ -394,7 +394,7 @@ queue::FindPriorityOrder(unsigned start_order, uint8_t priority,
}
unsigned
-queue::CountSamePriority(unsigned start_order, uint8_t priority) const
+Queue::CountSamePriority(unsigned start_order, uint8_t priority) const
{
assert(random);
assert(start_order <= length);
@@ -410,7 +410,7 @@ queue::CountSamePriority(unsigned start_order, uint8_t priority) const
}
bool
-queue::SetPriority(unsigned position, uint8_t priority, int after_order)
+Queue::SetPriority(unsigned position, uint8_t priority, int after_order)
{
assert(position < length);
@@ -468,7 +468,7 @@ queue::SetPriority(unsigned position, uint8_t priority, int after_order)
}
bool
-queue::SetPriorityRange(unsigned start_position, unsigned end_position,
+Queue::SetPriorityRange(unsigned start_position, unsigned end_position,
uint8_t priority, int after_order)
{
assert(start_position <= end_position);
diff --git a/src/Queue.hxx b/src/Queue.hxx
index da90d4a..3c6001b 100644
--- a/src/Queue.hxx
+++ b/src/Queue.hxx
@@ -41,7 +41,7 @@ struct Song;
* - the unique id (which stays the same, regardless of moves)
* - the order number (which only differs from "position" in random mode)
*/
-struct queue {
+struct Queue {
/**
* reserve max_length * HASH_MULT elements in the id
* number space
@@ -103,16 +103,16 @@ struct queue {
/** random number generator for shuffle and random mode */
LazyRandomEngine rand;
- queue(unsigned max_length);
+ explicit Queue(unsigned max_length);
/**
* Deinitializes a queue object. It does not free the queue
* pointer itself.
*/
- ~queue();
+ ~Queue();
- queue(const queue &other) = delete;
- queue &operator=(const queue &other) = delete;
+ Queue(const Queue &) = delete;
+ Queue &operator=(const Queue &) = delete;
unsigned GetLength() const {
assert(length <= max_length);
diff --git a/src/QueuePrint.cxx b/src/QueuePrint.cxx
index d5651cd..89f3c0a 100644
--- a/src/QueuePrint.cxx
+++ b/src/QueuePrint.cxx
@@ -38,7 +38,7 @@ extern "C" {
* @param end the index of the last song (excluding)
*/
static void
-queue_print_song_info(Client &client, const queue &queue,
+queue_print_song_info(Client &client, const Queue &queue,
unsigned position)
{
song_print_info(client, queue.Get(position));
@@ -51,7 +51,7 @@ queue_print_song_info(Client &client, const queue &queue,
}
void
-queue_print_info(Client &client, const queue &queue,
+queue_print_info(Client &client, const Queue &queue,
unsigned start, unsigned end)
{
assert(start <= end);
@@ -62,7 +62,7 @@ queue_print_info(Client &client, const queue &queue,
}
void
-queue_print_uris(Client &client, const queue &queue,
+queue_print_uris(Client &client, const Queue &queue,
unsigned start, unsigned end)
{
assert(start <= end);
@@ -75,7 +75,7 @@ queue_print_uris(Client &client, const queue &queue,
}
void
-queue_print_changes_info(Client &client, const queue &queue,
+queue_print_changes_info(Client &client, const Queue &queue,
uint32_t version)
{
for (unsigned i = 0; i < queue.GetLength(); i++) {
@@ -85,7 +85,7 @@ queue_print_changes_info(Client &client, const queue &queue,
}
void
-queue_print_changes_position(Client &client, const queue &queue,
+queue_print_changes_position(Client &client, const Queue &queue,
uint32_t version)
{
for (unsigned i = 0; i < queue.GetLength(); i++)
@@ -95,7 +95,7 @@ queue_print_changes_position(Client &client, const queue &queue,
}
void
-queue_find(Client &client, const queue &queue,
+queue_find(Client &client, const Queue &queue,
const SongFilter &filter)
{
for (unsigned i = 0; i < queue.GetLength(); i++) {
diff --git a/src/QueuePrint.hxx b/src/QueuePrint.hxx
index dbcb5ef..bc91bb5 100644
--- a/src/QueuePrint.hxx
+++ b/src/QueuePrint.hxx
@@ -27,28 +27,28 @@
#include <stdint.h>
-struct queue;
+struct Queue;
class SongFilter;
class Client;
void
-queue_print_info(Client &client, const queue &queue,
+queue_print_info(Client &client, const Queue &queue,
unsigned start, unsigned end);
void
-queue_print_uris(Client &client, const queue &queue,
+queue_print_uris(Client &client, const Queue &queue,
unsigned start, unsigned end);
void
-queue_print_changes_info(Client &client, const queue &queue,
+queue_print_changes_info(Client &client, const Queue &queue,
uint32_t version);
void
-queue_print_changes_position(Client &client, const queue &queue,
+queue_print_changes_position(Client &client, const Queue &queue,
uint32_t version);
void
-queue_find(Client &client, const queue &queue,
+queue_find(Client &client, const Queue &queue,
const SongFilter &filter);
#endif
diff --git a/src/QueueSave.cxx b/src/QueueSave.cxx
index 6a1a519..2ab5f62 100644
--- a/src/QueueSave.cxx
+++ b/src/QueueSave.cxx
@@ -60,7 +60,7 @@ queue_save_song(FILE *fp, int idx, const Song &song)
}
void
-queue_save(FILE *fp, const queue &queue)
+queue_save(FILE *fp, const Queue &queue)
{
for (unsigned i = 0; i < queue.GetLength(); i++) {
uint8_t prio = queue.GetPriorityAtPosition(i);
@@ -72,7 +72,7 @@ queue_save(FILE *fp, const queue &queue)
}
void
-queue_load_song(TextFile &file, const char *line, queue &queue)
+queue_load_song(TextFile &file, const char *line, Queue &queue)
{
if (queue.IsFull())
return;
diff --git a/src/QueueSave.hxx b/src/QueueSave.hxx
index 13322cc..6c618c0 100644
--- a/src/QueueSave.hxx
+++ b/src/QueueSave.hxx
@@ -27,16 +27,16 @@
#include <stdio.h>
-struct queue;
+struct Queue;
class TextFile;
void
-queue_save(FILE *fp, const queue &queue);
+queue_save(FILE *fp, const Queue &queue);
/**
* Loads one song from the state file and appends it to the queue.
*/
void
-queue_load_song(TextFile &file, const char *line, queue &queue);
+queue_load_song(TextFile &file, const char *line, Queue &queue);
#endif
diff --git a/src/SongFilter.cxx b/src/SongFilter.cxx
index 8d90c5f..49c966b 100644
--- a/src/SongFilter.cxx
+++ b/src/SongFilter.cxx
@@ -101,7 +101,7 @@ bool
SongFilter::Item::Match(const Tag &_tag) const
{
bool visited_types[TAG_NUM_OF_ITEM_TYPES];
- std::fill_n(visited_types, TAG_NUM_OF_ITEM_TYPES, false);
+ std::fill_n(visited_types, size_t(TAG_NUM_OF_ITEM_TYPES), false);
for (unsigned i = 0; i < _tag.num_items; i++) {
visited_types[_tag.items[i]->type] = true;
diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx
index 47e1a33..593f42d 100644
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -38,7 +38,10 @@ extern "C" {
#include <libavutil/avutil.h>
#include <libavutil/log.h>
#include <libavutil/mathematics.h>
-#include <libavutil/dict.h>
+
+#if LIBAVUTIL_VERSION_MAJOR >= 53
+#include <libavutil/frame.h>
+#endif
}
#include <assert.h>
@@ -223,6 +226,9 @@ copy_interleave_frame(const AVCodecContext *codec_context,
codec_context->channels,
frame->nb_samples,
codec_context->sample_fmt, 1);
+ if (data_size <= 0)
+ return data_size;
+
if (av_sample_fmt_is_planar(codec_context->sample_fmt) &&
codec_context->channels > 1) {
if(*global_buffer_size < data_size) {
@@ -451,7 +457,11 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
decoder_initialized(decoder, audio_format,
input.seekable, total_time);
+#if LIBAVUTIL_VERSION_MAJOR >= 53
+ AVFrame *frame = av_frame_alloc();
+#else
AVFrame *frame = avcodec_alloc_frame();
+#endif
if (!frame) {
LogError(ffmpeg_domain, "Could not allocate frame");
avformat_close_input(&format_context);
@@ -495,7 +505,9 @@ ffmpeg_decode(Decoder &decoder, InputStream &input)
}
} while (cmd != DecoderCommand::STOP);
-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 28, 0)
+#if LIBAVUTIL_VERSION_MAJOR >= 53
+ av_frame_free(&frame);
+#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 28, 0)
avcodec_free_frame(&frame);
#else
av_freep(&frame);
diff --git a/src/decoder/FfmpegMetaData.hxx b/src/decoder/FfmpegMetaData.hxx
index 0fd73df..998cdf5 100644
--- a/src/decoder/FfmpegMetaData.hxx
+++ b/src/decoder/FfmpegMetaData.hxx
@@ -21,8 +21,6 @@
#define MPD_FFMPEG_METADATA_HXX
extern "C" {
-#include <libavformat/avformat.h>
-#include <libavutil/avutil.h>
#include <libavutil/dict.h>
}
@@ -35,6 +33,6 @@ struct tag_handler;
void
ffmpeg_scan_dictionary(AVDictionary *dict,
- const struct tag_handler *handler, void *handler_ctx);
+ const tag_handler *handler, void *handler_ctx);
#endif
diff --git a/src/tag/TagConfig.cxx b/src/tag/TagConfig.cxx
index 96fd184..b8be4fc 100644
--- a/src/tag/TagConfig.cxx
+++ b/src/tag/TagConfig.cxx
@@ -39,7 +39,7 @@ TagLoadConfig()
if (value == nullptr)
return;
- std::fill_n(ignore_tag_items, TAG_NUM_OF_ITEM_TYPES, true);
+ std::fill_n(ignore_tag_items, size_t(TAG_NUM_OF_ITEM_TYPES), true);
if (StringEqualsCaseASCII(value, "none"))
return;
diff --git a/src/util/PeakBuffer.cxx b/src/util/PeakBuffer.cxx
index a3659b8..d9b193d 100644
--- a/src/util/PeakBuffer.cxx
+++ b/src/util/PeakBuffer.cxx
@@ -130,8 +130,9 @@ PeakBuffer::Append(const void *data, size_t length)
return true;
}
- if (peak_buffer == nullptr && peak_size > 0) {
- peak_buffer = (fifo_buffer *)HugeAllocate(peak_size);
+ if (peak_buffer == nullptr) {
+ if (peak_size > 0)
+ peak_buffer = (fifo_buffer *)HugeAllocate(peak_size);
if (peak_buffer == nullptr)
return false;
diff --git a/test/test_icy_parser.cxx b/test/test_icy_parser.cxx
new file mode 100644
index 0000000..2abf60f
--- /dev/null
+++ b/test/test_icy_parser.cxx
@@ -0,0 +1,85 @@
+/*
+ * Unit tests for class IcyMetaDataParser.
+ */
+
+#include "config.h"
+
+/* include the .cxx file to get access to internal functions */
+#include "IcyMetaDataParser.cxx"
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <string>
+
+#include <string.h>
+
+static Tag *
+icy_parse_tag(const char *p)
+{
+ char *q = strdup(p);
+ Tag *tag = icy_parse_tag(q, q + strlen(q));
+ free(q);
+ return tag;
+}
+
+static void
+CompareTagTitle(const Tag &tag, const std::string &title)
+{
+ CPPUNIT_ASSERT_EQUAL(1u, tag.num_items);
+
+ const TagItem &item = *tag.items[0];
+ CPPUNIT_ASSERT_EQUAL(TAG_TITLE, item.type);
+ CPPUNIT_ASSERT_EQUAL(title, std::string(item.value));
+}
+
+static void
+TestIcyParserTitle(const char *input, const char *title)
+{
+ Tag *tag = icy_parse_tag(input);
+ CompareTagTitle(*tag, title);
+ delete tag;
+}
+
+static void
+TestIcyParserEmpty(const char *input)
+{
+ Tag *tag = icy_parse_tag(input);
+ CPPUNIT_ASSERT_EQUAL(0u, tag->num_items);
+ delete tag;
+}
+
+class IcyTest : public CppUnit::TestFixture {
+ CPPUNIT_TEST_SUITE(IcyTest);
+ CPPUNIT_TEST(TestIcyMetadataParser);
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+ void TestIcyMetadataParser() {
+ TestIcyParserEmpty("foo=bar;");
+ TestIcyParserTitle("StreamTitle='foo bar'", "foo bar");
+ TestIcyParserTitle("StreamTitle='foo bar';", "foo bar");
+ TestIcyParserTitle("StreamTitle='foo\"bar';", "foo\"bar");
+ TestIcyParserTitle("StreamTitle='foo=bar';", "foo=bar");
+ TestIcyParserTitle("a=b;StreamTitle='foo';", "foo");
+ TestIcyParserTitle("a=;StreamTitle='foo';", "foo");
+ TestIcyParserTitle("a=b;StreamTitle='foo';c=d", "foo");
+ TestIcyParserTitle("a=b;StreamTitle='foo'", "foo");
+ TestIcyParserTitle("a='b;c';StreamTitle='foo;bar'", "foo;bar");
+ TestIcyParserTitle("a='b'c';StreamTitle='foo'bar'", "foo'bar");
+ TestIcyParserTitle("StreamTitle='fo'o'b'ar';a='b'c'd'", "fo'o'b'ar");
+ }
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION(IcyTest);
+
+int
+main(gcc_unused int argc, gcc_unused char **argv)
+{
+ CppUnit::TextUi::TestRunner runner;
+ auto ®istry = CppUnit::TestFactoryRegistry::getRegistry();
+ runner.addTest(registry.makeTest());
+ return runner.run() ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/test/test_queue_priority.cxx b/test/test_queue_priority.cxx
index a103779..fca18fc 100644
--- a/test/test_queue_priority.cxx
+++ b/test/test_queue_priority.cxx
@@ -26,7 +26,7 @@ Song::Free()
}
static void
-check_descending_priority(const struct queue *queue,
+check_descending_priority(const Queue *queue,
unsigned start_order)
{
assert(start_order < queue->GetLength());
@@ -55,7 +55,7 @@ QueuePriorityTest::TestPriority()
{
static Song songs[16];
- struct queue queue(32);
+ Queue queue(32);
for (unsigned i = 0; i < ARRAY_SIZE(songs); ++i)
queue.Append(&songs[i], 0);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mpd/pkg-mpd.git
More information about the Pkg-mpd-commits
mailing list