Hello community,

here is the log from the commit of package mpd for openSUSE:Factory checked in 
at 2020-06-22 17:46:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mpd (Old)
 and      /work/SRC/openSUSE:Factory/.mpd.new.2956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mpd"

Mon Jun 22 17:46:40 2020 rev:21 rq:816315 version:0.21.24

Changes:
--------
--- /work/SRC/openSUSE:Factory/mpd/mpd.changes  2020-04-27 23:34:41.007090530 
+0200
+++ /work/SRC/openSUSE:Factory/.mpd.new.2956/mpd.changes        2020-06-22 
17:46:45.302006827 +0200
@@ -1,0 +2,14 @@
+Mon Jun 22 10:33:14 UTC 2020 - Илья Индиго <[email protected]>
+
+- Update to 0.21.24
+  * https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/v0.21.24/NEWS
+  * protocol: "tagtypes" requires no permissions
+  * database: simple: fix crash when mounting twice
+  * decoder
+    * modplug: fix Windows build failure
+    * wildmidi: attempt to detect WildMidi using pkg-config
+    * wildmidi: fix Windows build failure
+  * player: don't restart current song if seeking beyond end
+  * fix unit test failure
+
+-------------------------------------------------------------------

Old:
----
  mpd-0.21.23.tar.xz

New:
----
  mpd-0.21.24.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mpd.spec ++++++
--- /var/tmp/diff_new_pack.qHksLV/_old  2020-06-22 17:46:46.266009851 +0200
+++ /var/tmp/diff_new_pack.qHksLV/_new  2020-06-22 17:46:46.266009851 +0200
@@ -20,7 +20,7 @@
 %bcond_with    faad
 %bcond_without mpd_iso9660
 Name:           mpd
-Version:        0.21.23
+Version:        0.21.24
 Release:        0
 Summary:        Music Player Daemon
 License:        GPL-2.0-or-later

++++++ mpd-0.21.23.tar.xz -> mpd-0.21.24.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/.gitignore new/mpd-0.21.24/.gitignore
--- old/mpd-0.21.23/.gitignore  2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/.gitignore  2020-06-10 22:48:50.000000000 +0200
@@ -6,3 +6,6 @@
 /output/
 
 __pycache__/
+
+/.clangd/
+/compile_commands.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/.travis.yml new/mpd-0.21.24/.travis.yml
--- old/mpd-0.21.23/.travis.yml 2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/.travis.yml 2020-06-10 22:48:50.000000000 +0200
@@ -135,7 +135,8 @@
             - chromaprint
             - libsamplerate
             - libsoxr
-            - libzzip
+            # libzzip appears to be broken on Homebrew: "ld: library not found 
for -lzzip"
+            #- libzzip
             - flac
             - opus
             - libvorbis
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/NEWS new/mpd-0.21.24/NEWS
--- old/mpd-0.21.23/NEWS        2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/NEWS        2020-06-10 22:48:50.000000000 +0200
@@ -1,3 +1,23 @@
+ver 0.21.24 (2020/06/10)
+* protocol
+  - "tagtypes" requires no permissions
+* database
+  - simple: fix crash when mounting twice
+* decoder
+  - modplug: fix Windows build failure
+  - wildmidi: attempt to detect WildMidi using pkg-config
+  - wildmidi: fix Windows build failure
+* player
+  - don't restart current song if seeking beyond end
+* Android
+  - enable the decoder plugins GME, ModPlug and WildMidi
+  - fix build failure with Android NDK r21
+* Windows
+  - fix stream playback
+  - enable the decoder plugins GME, ModPlug and WildMidi
+  - work around Meson bug breaking the Windows build with GCC 10
+* fix unit test failure
+
 ver 0.21.23 (2020/04/23)
 * protocol
   - add tag fallback for AlbumSort
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/android/AndroidManifest.xml 
new/mpd-0.21.24/android/AndroidManifest.xml
--- old/mpd-0.21.23/android/AndroidManifest.xml 2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/android/AndroidManifest.xml 2020-06-10 22:48:50.000000000 
+0200
@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android";
           package="org.musicpd"
           android:installLocation="auto"
-          android:versionCode="46"
-          android:versionName="0.21.23">
+          android:versionCode="47"
+          android:versionName="0.21.24">
 
   <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/android/build.py 
new/mpd-0.21.24/android/build.py
--- old/mpd-0.21.23/android/build.py    2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/android/build.py    2020-06-10 22:48:50.000000000 +0200
@@ -26,7 +26,7 @@
         'ndk_arch': 'arm',
         'toolchain_arch': 'arm-linux-androideabi',
         'llvm_triple': 'armv7-linux-androideabi',
-        'cflags': '-march=armv7-a -mfpu=vfp -mfloat-abi=softfp',
+        'cflags': '-fpic -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp',
     },
 
     'arm64-v8a': {
@@ -34,7 +34,7 @@
         'ndk_arch': 'arm64',
         'toolchain_arch': 'aarch64-linux-android',
         'llvm_triple': 'aarch64-linux-android',
-        'cflags': '',
+        'cflags': '-fpic',
     },
 
     'x86': {
@@ -42,7 +42,7 @@
         'ndk_arch': 'x86',
         'toolchain_arch': 'x86',
         'llvm_triple': 'i686-linux-android',
-        'cflags': '-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32',
+        'cflags': '-fPIC -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32',
     },
 
     'x86_64': {
@@ -50,7 +50,7 @@
         'ndk_arch': 'x86_64',
         'toolchain_arch': 'x86_64',
         'llvm_triple': 'x86_64-linux-android',
-        'cflags': '-m64',
+        'cflags': '-fPIC -m64',
     },
 }
 
@@ -97,7 +97,6 @@
         llvm_triple = abi_info['llvm_triple'] + android_api_level
 
         common_flags = '-Os -g'
-        common_flags += ' -fPIC'
         common_flags += ' ' + abi_info['cflags']
 
         toolchain_bin = os.path.join(toolchain_path, 'bin')
@@ -169,6 +168,9 @@
     opus,
     flac,
     libid3tag,
+    libmodplug,
+    wildmidi,
+    gme,
     ffmpeg,
     curl,
     libexpat,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/doc/conf.py new/mpd-0.21.24/doc/conf.py
--- old/mpd-0.21.23/doc/conf.py 2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/doc/conf.py 2020-06-10 22:48:50.000000000 +0200
@@ -38,7 +38,7 @@
 # built documents.
 #
 # The short X.Y version.
-version = '0.21.23'
+version = '0.21.24'
 # The full version, including alpha/beta/rc tags.
 release = version
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/doc/protocol.rst 
new/mpd-0.21.24/doc/protocol.rst
--- old/mpd-0.21.23/doc/protocol.rst    2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/doc/protocol.rst    2020-06-10 22:48:50.000000000 +0200
@@ -464,7 +464,8 @@
     - ``songs``: number of songs
     - ``uptime``: daemon uptime in seconds
     - ``db_playtime``: sum of all song times in the database in seconds
-    - ``db_update``: last db update in UNIX time
+    - ``db_update``: last db update in UNIX time (seconds since
+      1970-01-01 UTC)
     - ``playtime``: time length of music played
 
 Playback options
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/meson.build new/mpd-0.21.24/meson.build
--- old/mpd-0.21.23/meson.build 2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/meson.build 2020-06-10 22:48:50.000000000 +0200
@@ -1,11 +1,12 @@
 project(
   'mpd',
   ['c', 'cpp'],
-  version: '0.21.23',
+  version: '0.21.24',
   meson_version: '>= 0.49.0',
   default_options: [
     'c_std=c99',
-    'cpp_std=c++14'
+    'cpp_std=c++14',
+    'warning_level=2',
   ],
   license: 'GPLv2+',
 )
@@ -40,9 +41,6 @@
 ]
 
 test_common_flags = [
-  '-Wall',
-  '-Wextra',
-
   '-fvisibility=hidden',
 
   '-ffast-math',
@@ -142,7 +140,13 @@
 conf.set('HAVE_GETPWUID_R', compiler.has_function('getpwuid_r'))
 conf.set('HAVE_INITGROUPS', compiler.has_function('initgroups'))
 conf.set('HAVE_FNMATCH', compiler.has_function('fnmatch'))
-conf.set('HAVE_STRNDUP', compiler.has_function('strndup', prefix: '#define 
_GNU_SOURCE\n#include <string.h>'))
+
+# Explicitly exclude Windows in this check because
+# https://github.com/mesonbuild/meson/issues/3672 (reported in 2018,
+# still not fixed in 2020) causes Meson to believe it exists, because
+# __builtin_strndup() exists (but strndup() still cannot be used).
+conf.set('HAVE_STRNDUP', not is_windows and compiler.has_function('strndup', 
prefix: '#define _GNU_SOURCE\n#include <string.h>'))
+
 conf.set('HAVE_STRCASESTR', compiler.has_function('strcasestr'))
 
 conf.set('HAVE_PRCTL', is_linux)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/python/build/cmake.py 
new/mpd-0.21.24/python/build/cmake.py
--- old/mpd-0.21.23/python/build/cmake.py       1970-01-01 01:00:00.000000000 
+0100
+++ new/mpd-0.21.24/python/build/cmake.py       2020-06-10 22:48:50.000000000 
+0200
@@ -0,0 +1,45 @@
+import subprocess
+
+from build.project import Project
+
+def configure(toolchain, src, build, args=()):
+    cross_args = []
+
+    if toolchain.is_windows:
+        cross_args.append('-DCMAKE_SYSTEM_NAME=Windows')
+        cross_args.append('-DCMAKE_RC_COMPILER=' + toolchain.windres)
+
+    configure = [
+        'cmake',
+        src,
+
+        '-DCMAKE_INSTALL_PREFIX=' + toolchain.install_prefix,
+        '-DCMAKE_BUILD_TYPE=release',
+
+        '-DCMAKE_C_COMPILER=' + toolchain.cc,
+        '-DCMAKE_CXX_COMPILER=' + toolchain.cxx,
+
+        '-DCMAKE_C_FLAGS=' + toolchain.cflags + ' ' + toolchain.cppflags,
+        '-DCMAKE_CXX_FLAGS=' + toolchain.cxxflags + ' ' + toolchain.cppflags,
+
+        '-GNinja',
+    ] + cross_args + args
+
+    subprocess.check_call(configure, env=toolchain.env, cwd=build)
+
+class CmakeProject(Project):
+    def __init__(self, url, md5, installed, configure_args=[],
+                 **kwargs):
+        Project.__init__(self, url, md5, installed, **kwargs)
+        self.configure_args = configure_args
+
+    def configure(self, toolchain):
+        src = self.unpack(toolchain)
+        build = self.make_build_path(toolchain)
+        configure(toolchain, src, build, self.configure_args)
+        return build
+
+    def build(self, toolchain):
+        build = self.configure(toolchain)
+        subprocess.check_call(['ninja', 'install'],
+                              cwd=build, env=toolchain.env)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/python/build/libs.py 
new/mpd-0.21.24/python/build/libs.py
--- old/mpd-0.21.23/python/build/libs.py        2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/python/build/libs.py        2020-06-10 22:48:50.000000000 
+0200
@@ -4,6 +4,7 @@
 from build.project import Project
 from build.zlib import ZlibProject
 from build.meson import MesonProject
+from build.cmake import CmakeProject
 from build.autotools import AutotoolsProject
 from build.ffmpeg import FfmpegProject
 from build.boost import BoostProject
@@ -111,9 +112,44 @@
     ],
 )
 
+libmodplug = AutotoolsProject(
+    
'https://downloads.sourceforge.net/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz',
+    '457ca5a6c179656d66c01505c0d95fafaead4329b9dbaa0f997d00a3508ad9de',
+    'lib/libmodplug.a',
+    [
+        '--disable-shared', '--enable-static',
+    ],
+)
+
+wildmidi = CmakeProject(
+    'https://codeload.github.com/Mindwerks/wildmidi/tar.gz/wildmidi-0.4.3',
+    '498e5a96455bb4b91b37188ad6dcb070824e92c44f5ed452b90adbaec8eef3c5',
+    'lib/libWildMidi.a',
+    [
+        '-DBUILD_SHARED_LIBS=OFF',
+        '-DWANT_PLAYER=OFF',
+        '-DWANT_STATIC=ON',
+    ],
+    base='wildmidi-wildmidi-0.4.3',
+    name='wildmidi',
+    version='0.4.3',
+)
+
+gme = CmakeProject(
+    
'https://bitbucket.org/mpyne/game-music-emu/downloads/game-music-emu-0.6.3.tar.xz',
+    'aba34e53ef0ec6a34b58b84e28bf8cfbccee6585cebca25333604c35db3e051d',
+    'lib/libgme.a',
+    [
+        '-DBUILD_SHARED_LIBS=OFF',
+        '-DENABLE_UBSAN=OFF',
+        '-DZLIB_INCLUDE_DIR=OFF',
+        '-DSDL2_DIR=OFF',
+    ],
+)
+
 ffmpeg = FfmpegProject(
-    'http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.xz',
-    'cb754255ab0ee2ea5f66f8850e1bd6ad5cac1cd855d0a2f4990fb8c668b0d29c',
+    'http://ffmpeg.org/releases/ffmpeg-4.2.3.tar.xz',
+    '9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31',
     'lib/libavcodec.a',
     [
         '--disable-shared', '--enable-static',
@@ -341,8 +377,8 @@
 )
 
 curl = AutotoolsProject(
-    'http://curl.haxx.se/download/curl-7.69.1.tar.xz',
-    '03c7d5e6697f7b7e40ada1b2256e565a555657398e6c1fcfa4cb251ccd819d4f',
+    'http://curl.haxx.se/download/curl-7.70.0.tar.xz',
+    '032f43f2674008c761af19bf536374128c16241fb234699a55f9fb603fcfbae7',
     'lib/libcurl.a',
     [
         '--disable-shared', '--enable-static',
@@ -397,7 +433,7 @@
 )
 
 boost = BoostProject(
-    
'https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.bz2',
-    '59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722',
+    
'https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.bz2',
+    '4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402',
     'include/boost/version.hpp',
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/AudioFormat.hxx 
new/mpd-0.21.24/src/AudioFormat.hxx
--- old/mpd-0.21.23/src/AudioFormat.hxx 2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/AudioFormat.hxx 2020-06-10 22:48:50.000000000 +0200
@@ -20,7 +20,7 @@
 #ifndef MPD_AUDIO_FORMAT_HXX
 #define MPD_AUDIO_FORMAT_HXX
 
-#include "pcm/SampleFormat.hxx"
+#include "pcm/SampleFormat.hxx" // IWYU pragma: export
 #include "util/Compiler.h"
 
 #include <chrono>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/command/AllCommands.cxx 
new/mpd-0.21.24/src/command/AllCommands.cxx
--- old/mpd-0.21.23/src/command/AllCommands.cxx 2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/command/AllCommands.cxx 2020-06-10 22:48:50.000000000 
+0200
@@ -193,7 +193,7 @@
        { "subscribe", PERMISSION_READ, 1, 1, handle_subscribe },
        { "swap", PERMISSION_CONTROL, 2, 2, handle_swap },
        { "swapid", PERMISSION_CONTROL, 2, 2, handle_swapid },
-       { "tagtypes", PERMISSION_READ, 0, -1, handle_tagtypes },
+       { "tagtypes", PERMISSION_NONE, 0, -1, handle_tagtypes },
        { "toggleoutput", PERMISSION_ADMIN, 1, 1, handle_toggleoutput },
 #ifdef ENABLE_DATABASE
        { "unmount", PERMISSION_ADMIN, 1, 1, handle_unmount },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/db/plugins/ProxyDatabasePlugin.cxx 
new/mpd-0.21.24/src/db/plugins/ProxyDatabasePlugin.cxx
--- old/mpd-0.21.23/src/db/plugins/ProxyDatabasePlugin.cxx      2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/db/plugins/ProxyDatabasePlugin.cxx      2020-06-10 
22:48:50.000000000 +0200
@@ -493,9 +493,13 @@
        try {
                CheckError(connection);
 
-               if (mpd_connection_cmp_server_version(connection, 0, 19, 0) < 0)
-                       throw FormatRuntimeError("Connect to MPD %s, but this 
plugin requires at least version 0.19",
-                                                
mpd_connection_get_server_version(connection));
+               if (mpd_connection_cmp_server_version(connection, 0, 19, 0) < 
0) {
+                       const unsigned *version =
+                               mpd_connection_get_server_version(connection);
+                       throw FormatRuntimeError("Connect to MPD %u.%u.%u, but 
this "
+                                                "plugin requires at least 
version 0.19",
+                                                version[0], version[1], 
version[2]);
+               }
 
                if (!password.empty() &&
                    !mpd_run_password(connection, password.c_str()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.21.23/src/db/plugins/simple/SimpleDatabasePlugin.cxx 
new/mpd-0.21.24/src/db/plugins/simple/SimpleDatabasePlugin.cxx
--- old/mpd-0.21.23/src/db/plugins/simple/SimpleDatabasePlugin.cxx      
2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/db/plugins/simple/SimpleDatabasePlugin.cxx      
2020-06-10 22:48:50.000000000 +0200
@@ -449,12 +449,7 @@
 
        // TODO: update the new database instance?
 
-       try {
-               Mount(local_uri, std::move(db));
-       } catch (...) {
-               db->Close();
-               throw;
-       }
+       Mount(local_uri, std::move(db));
 }
 
 inline DatabasePtr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/Bridge.cxx 
new/mpd-0.21.24/src/decoder/Bridge.cxx
--- old/mpd-0.21.23/src/decoder/Bridge.cxx      2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/decoder/Bridge.cxx      2020-06-10 22:48:50.000000000 
+0200
@@ -33,6 +33,8 @@
 #include "util/ConstBuffer.hxx"
 #include "util/StringBuffer.hxx"
 
+#include <stdexcept>
+
 #include <assert.h>
 #include <string.h>
 #include <math.h>
@@ -344,6 +346,10 @@
                /* d'oh, we can't seek to the sub-song start position,
                   what now? - no idea, ignoring the problem for now. */
                initial_seek_running = false;
+
+               if (initial_seek_essential)
+                       error = 
std::make_exception_ptr(std::runtime_error("Decoder failed to seek"));
+
                return;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/Bridge.hxx 
new/mpd-0.21.24/src/decoder/Bridge.hxx
--- old/mpd-0.21.23/src/decoder/Bridge.hxx      2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/decoder/Bridge.hxx      2020-06-10 22:48:50.000000000 
+0200
@@ -63,6 +63,11 @@
        bool initial_seek_pending;
 
        /**
+        * Are initial seek failures fatal?
+        */
+       const bool initial_seek_essential;
+
+       /**
         * Is the initial seek currently running?  During this time,
         * the decoder command is SEEK.  This flag is set by
         * decoder_get_virtual_command(), when the virtual SEEK
@@ -107,9 +112,11 @@
        std::exception_ptr error;
 
        DecoderBridge(DecoderControl &_dc, bool _initial_seek_pending,
+                     bool _initial_seek_essential,
                      std::unique_ptr<Tag> _tag)
                :dc(_dc),
                 initial_seek_pending(_initial_seek_pending),
+                initial_seek_essential(_initial_seek_essential),
                 song_tag(std::move(_tag)) {}
 
        ~DecoderBridge();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/Control.cxx 
new/mpd-0.21.24/src/decoder/Control.cxx
--- old/mpd-0.21.23/src/decoder/Control.cxx     2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/decoder/Control.cxx     2020-06-10 22:48:50.000000000 
+0200
@@ -90,6 +90,7 @@
 void
 DecoderControl::Start(std::unique_ptr<DetachedSong> _song,
                      SongTime _start_time, SongTime _end_time,
+                     bool _initial_seek_essential,
                      MusicBuffer &_buffer,
                      std::shared_ptr<MusicPipe> _pipe) noexcept
 {
@@ -99,6 +100,7 @@
        song = std::move(_song);
        start_time = _start_time;
        end_time = _end_time;
+       initial_seek_essential = _initial_seek_essential;
        buffer = &_buffer;
        pipe = std::move(_pipe);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/Control.hxx 
new/mpd-0.21.24/src/decoder/Control.hxx
--- old/mpd-0.21.23/src/decoder/Control.hxx     2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/decoder/Control.hxx     2020-06-10 22:48:50.000000000 
+0200
@@ -117,6 +117,12 @@
 
        bool seek_error;
        bool seekable;
+
+       /**
+        * @see #DecoderBridge::initial_seek_essential
+        */
+       bool initial_seek_essential;
+
        SongTime seek_time;
 
 private:
@@ -398,11 +404,14 @@
         * owned and freed by the decoder
         * @param start_time see #DecoderControl
         * @param end_time see #DecoderControl
+        * @param initial_seek_essential see
+        * #DecoderBridge::initial_seek_essential
         * @param pipe the pipe which receives the decoded chunks (owned by
         * the caller)
         */
        void Start(std::unique_ptr<DetachedSong> song,
                   SongTime start_time, SongTime end_time,
+                  bool initial_seek_essential,
                   MusicBuffer &buffer,
                   std::shared_ptr<MusicPipe> pipe) noexcept;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/DecoderPlugin.hxx 
new/mpd-0.21.24/src/decoder/DecoderPlugin.hxx
--- old/mpd-0.21.23/src/decoder/DecoderPlugin.hxx       2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/decoder/DecoderPlugin.hxx       2020-06-10 
22:48:50.000000000 +0200
@@ -22,7 +22,7 @@
 
 #include "util/Compiler.h"
 
-#include <forward_list>
+#include <forward_list>  // IWYU pragma: export
 
 struct ConfigBlock;
 class InputStream;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/Thread.cxx 
new/mpd-0.21.24/src/decoder/Thread.cxx
--- old/mpd-0.21.23/src/decoder/Thread.cxx      2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/decoder/Thread.cxx      2020-06-10 22:48:50.000000000 
+0200
@@ -461,6 +461,7 @@
                dc.start_time = dc.seek_time;
 
        DecoderBridge bridge(dc, dc.start_time.IsPositive(),
+                            dc.initial_seek_essential,
                             /* pass the song tag only if it's
                                authoritative, i.e. if it's a local
                                file - tags on "stream" songs are just
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/plugins/GmeDecoderPlugin.cxx 
new/mpd-0.21.24/src/decoder/plugins/GmeDecoderPlugin.cxx
--- old/mpd-0.21.23/src/decoder/plugins/GmeDecoderPlugin.cxx    2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/decoder/plugins/GmeDecoderPlugin.cxx    2020-06-10 
22:48:50.000000000 +0200
@@ -27,10 +27,10 @@
 #include "fs/Path.hxx"
 #include "fs/AllocatedPath.hxx"
 #include "fs/FileSystem.hxx"
+#include "fs/NarrowPath.hxx"
 #include "util/ScopeExit.hxx"
 #include "util/StringCompare.hxx"
 #include "util/StringFormat.hxx"
-#include "util/UriUtil.hxx"
 #include "util/Domain.hxx"
 #include "Log.hxx"
 
@@ -38,7 +38,6 @@
 
 #include <assert.h>
 #include <stdlib.h>
-#include <string.h>
 
 #define SUBTUNE_PREFIX "tune_"
 
@@ -76,11 +75,10 @@
 static unsigned
 ParseSubtuneName(const char *base) noexcept
 {
-       if (memcmp(base, SUBTUNE_PREFIX, sizeof(SUBTUNE_PREFIX) - 1) != 0)
+       base = StringAfterPrefix(base, SUBTUNE_PREFIX);
+       if (base == nullptr)
                return 0;
 
-       base += sizeof(SUBTUNE_PREFIX) - 1;
-
        char *endptr;
        auto track = strtoul(base, &endptr, 10);
        if (endptr == base || *endptr != '.')
@@ -99,41 +97,46 @@
        const Path base = path_fs.GetBase();
        unsigned track;
        if (base.IsNull() ||
-           (track = ParseSubtuneName(base.c_str())) < 1)
+           (track = ParseSubtuneName(NarrowPath(base))) < 1)
                return { AllocatedPath(path_fs), 0 };
 
        return { path_fs.GetDirectoryName(), track - 1 };
 }
 
+static AllocatedPath
+ReplaceSuffix(Path src,
+             const PathTraitsFS::const_pointer_type new_suffix) noexcept
+{
+       const auto *old_suffix = src.GetSuffix();
+       if (old_suffix == nullptr)
+               return nullptr;
+
+       PathTraitsFS::string s(src.c_str(), old_suffix);
+       s += new_suffix;
+       return AllocatedPath::FromFS(std::move(s));
+}
+
 static Music_Emu*
 LoadGmeAndM3u(GmeContainerPath container) {
 
-       const char *path = container.path.c_str();
-       const char *suffix = uri_get_suffix(path);
-
        Music_Emu *emu;
        const char *gme_err =
-               gme_open_file(path, &emu, GME_SAMPLE_RATE);
+               gme_open_file(NarrowPath(container.path), &emu, 
GME_SAMPLE_RATE);
        if (gme_err != nullptr) {
                LogWarning(gme_domain, gme_err);
                return nullptr;
        }
 
-       if(suffix == nullptr) {
-               return emu;
-       }
-
-       std::string m3u_path(path,suffix);
-       m3u_path += "m3u";
-
+       const auto m3u_path = ReplaceSuffix(container.path,
+                                           PATH_LITERAL("m3u"));
     /*
      * Some GME formats lose metadata if you attempt to
      * load a non-existant M3U file, so check that one
      * exists before loading.
      */
-       if(FileExists(Path::FromFS(m3u_path.c_str()))) {
-               gme_load_m3u(emu,m3u_path.c_str());
-       }
+       if (!m3u_path.IsNull() && FileExists(m3u_path))
+               gme_load_m3u(emu, NarrowPath(m3u_path));
+
        return emu;
 }
 
@@ -303,7 +306,7 @@
        if (num_songs < 2)
                return list;
 
-       const char *subtune_suffix = uri_get_suffix(path_fs.c_str());
+       const auto *subtune_suffix = path_fs.GetSuffix();
 
        TagBuilder tag_builder;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.21.23/src/decoder/plugins/ModplugDecoderPlugin.cxx 
new/mpd-0.21.24/src/decoder/plugins/ModplugDecoderPlugin.cxx
--- old/mpd-0.21.23/src/decoder/plugins/ModplugDecoderPlugin.cxx        
2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/decoder/plugins/ModplugDecoderPlugin.cxx        
2020-06-10 22:48:50.000000000 +0200
@@ -26,8 +26,13 @@
 #include "util/RuntimeError.hxx"
 #include "Log.hxx"
 
-#include <libmodplug/modplug.h>
+#ifdef _WIN32
+/* assume ModPlug is built as static library on Windows; without
+   this, linking to the static library would fail */
+#define MODPLUG_STATIC
+#endif
 
+#include <libmodplug/modplug.h>
 
 #include <assert.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.21.23/src/decoder/plugins/WildmidiDecoderPlugin.cxx 
new/mpd-0.21.24/src/decoder/plugins/WildmidiDecoderPlugin.cxx
--- old/mpd-0.21.23/src/decoder/plugins/WildmidiDecoderPlugin.cxx       
2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/decoder/plugins/WildmidiDecoderPlugin.cxx       
2020-06-10 22:48:50.000000000 +0200
@@ -25,9 +25,16 @@
 #include "fs/AllocatedPath.hxx"
 #include "fs/FileSystem.hxx"
 #include "fs/Path.hxx"
+#include "fs/NarrowPath.hxx"
 #include "Log.hxx"
 #include "PluginUnavailable.hxx"
 
+#ifdef _WIN32
+/* assume WildMidi is built as static library on Windows; without
+   this, linking to the static library would fail */
+#define WILDMIDI_STATIC
+#endif
+
 extern "C" {
 #include <wildmidi_lib.h>
 }
@@ -53,7 +60,8 @@
        AtScopeExit() { WildMidi_ClearError(); };
 #endif
 
-       if (WildMidi_Init(path.c_str(), wildmidi_audio_format.sample_rate,
+       if (WildMidi_Init(NarrowPath(path),
+                         wildmidi_audio_format.sample_rate,
                          0) != 0) {
 #ifdef LIBWILDMIDI_VERSION
                /* WildMidi_GetError() requires libwildmidi 0.4 */
@@ -96,7 +104,7 @@
        midi *wm;
        const struct _WM_Info *info;
 
-       wm = WildMidi_Open(path_fs.c_str());
+       wm = WildMidi_Open(NarrowPath(path_fs));
        if (wm == nullptr)
                return;
 
@@ -136,7 +144,7 @@
 static bool
 wildmidi_scan_file(Path path_fs, TagHandler &handler) noexcept
 {
-       midi *wm = WildMidi_Open(path_fs.c_str());
+       midi *wm = WildMidi_Open(NarrowPath(path_fs));
        if (wm == nullptr)
                return false;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/decoder/plugins/meson.build 
new/mpd-0.21.24/src/decoder/plugins/meson.build
--- old/mpd-0.21.23/src/decoder/plugins/meson.build     2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/decoder/plugins/meson.build     2020-06-10 
22:48:50.000000000 +0200
@@ -129,7 +129,16 @@
   decoder_plugins_sources += 'WavpackDecoderPlugin.cxx'
 endif
 
-wildmidi_dep = c_compiler.find_library('WildMidi', required: 
get_option('wildmidi'))
+wildmidi_required = get_option('wildmidi')
+if wildmidi_required.enabled()
+  # if the user has force-enabled WildMidi, allow the pkg-config test
+  # to fail; after that, the find_library() check must succeed
+  wildmidi_required = false
+endif
+wildmidi_dep = dependency('wildmidi', required: wildmidi_required)
+if not wildmidi_dep.found()
+  wildmidi_dep = c_compiler.find_library('WildMidi', required: 
get_option('wildmidi'))
+endif
 conf.set('ENABLE_WILDMIDI', wildmidi_dep.found())
 if wildmidi_dep.found()
   decoder_plugins_sources += 'WildmidiDecoderPlugin.cxx'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/fs/AllocatedPath.hxx 
new/mpd-0.21.24/src/fs/AllocatedPath.hxx
--- old/mpd-0.21.23/src/fs/AllocatedPath.hxx    2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/fs/AllocatedPath.hxx    2020-06-10 22:48:50.000000000 
+0200
@@ -285,6 +285,11 @@
        bool IsAbsolute() const noexcept {
                return Traits::IsAbsolute(c_str());
        }
+
+       gcc_pure
+       const_pointer_type GetSuffix() const noexcept {
+               return ((Path)*this).GetSuffix();
+       }
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/lib/curl/Request.cxx 
new/mpd-0.21.24/src/lib/curl/Request.cxx
--- old/mpd-0.21.23/src/lib/curl/Request.cxx    2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/lib/curl/Request.cxx    2020-06-10 22:48:50.000000000 
+0200
@@ -56,7 +56,7 @@
        easy.SetUserAgent("Music Player Daemon " VERSION);
        easy.SetHeaderFunction(_HeaderFunction, this);
        easy.SetWriteFunction(WriteFunction, this);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(_WIN32)
        easy.SetOption(CURLOPT_NETRC, 1L);
 #endif
        easy.SetErrorBuffer(error_buffer);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/lib/dbus/Values.hxx 
new/mpd-0.21.24/src/lib/dbus/Values.hxx
--- old/mpd-0.21.23/src/lib/dbus/Values.hxx     2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/lib/dbus/Values.hxx     2020-06-10 22:48:50.000000000 
+0200
@@ -86,7 +86,7 @@
 template<typename T>
 static WrapVariant<T> Variant(const T &_value) noexcept {
        return WrapVariant<T>(_value);
-};
+}
 
 template<typename T>
 struct WrapFixedArray {
@@ -103,7 +103,7 @@
 static WrapFixedArray<T> FixedArray(const T *_data,
                                    size_t _size) noexcept {
        return WrapFixedArray<T>(_data, _size);
-};
+}
 
 template<typename... T>
 struct WrapStruct {
@@ -118,7 +118,7 @@
 template<typename... T>
 static WrapStruct<T...> Struct(const T&... values) noexcept {
        return WrapStruct<T...>(values...);
-};
+}
 
 } /* namespace ODBus */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/lib/ffmpeg/Time.hxx 
new/mpd-0.21.24/src/lib/ffmpeg/Time.hxx
--- old/mpd-0.21.23/src/lib/ffmpeg/Time.hxx     2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/lib/ffmpeg/Time.hxx     2020-06-10 22:48:50.000000000 
+0200
@@ -45,7 +45,7 @@
 {
        assert(t != (int64_t)AV_NOPTS_VALUE);
 
-       return FloatDuration(av_rescale_q(t, time_base, (AVRational){1, 1024}))
+       return FloatDuration(av_rescale_q(t, time_base, {1, 1024}))
                / 1024;
 }
 
@@ -69,7 +69,7 @@
        assert(t != (int64_t)AV_NOPTS_VALUE);
 
        return SongTime::FromMS(av_rescale_q(t, time_base,
-                                            (AVRational){1, 1000}));
+                                            {1, 1000}));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/lib/pulse/LockGuard.hxx 
new/mpd-0.21.24/src/lib/pulse/LockGuard.hxx
--- old/mpd-0.21.23/src/lib/pulse/LockGuard.hxx 2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/lib/pulse/LockGuard.hxx 2020-06-10 22:48:50.000000000 
+0200
@@ -41,6 +41,6 @@
        LockGuard &operator=(const LockGuard &) = delete;
 };
 
-};
+}
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/lib/upnp/ixmlwrap.hxx 
new/mpd-0.21.24/src/lib/upnp/ixmlwrap.hxx
--- old/mpd-0.21.23/src/lib/upnp/ixmlwrap.hxx   2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/lib/upnp/ixmlwrap.hxx   2020-06-10 22:48:50.000000000 
+0200
@@ -30,6 +30,6 @@
        const char *getFirstElementValue(IXML_Document *doc,
                                         const char *name) noexcept;
 
-};
+}
 
 #endif /* _IXMLWRAP_H_INCLUDED_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.21.23/src/output/plugins/OpenALOutputPlugin.cxx 
new/mpd-0.21.24/src/output/plugins/OpenALOutputPlugin.cxx
--- old/mpd-0.21.23/src/output/plugins/OpenALOutputPlugin.cxx   2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/output/plugins/OpenALOutputPlugin.cxx   2020-06-10 
22:48:50.000000000 +0200
@@ -29,6 +29,9 @@
 #else
 #include <OpenAL/al.h>
 #include <OpenAL/alc.h>
+/* on macOS, OpenAL is deprecated, but since the user asked to enable
+   this plugin, let's ignore the compiler warnings */
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 #endif
 
 class OpenALOutput final : AudioOutput {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/player/CrossFade.cxx 
new/mpd-0.21.24/src/player/CrossFade.cxx
--- old/mpd-0.21.23/src/player/CrossFade.cxx    2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/player/CrossFade.cxx    2020-06-10 22:48:50.000000000 
+0200
@@ -62,7 +62,7 @@
                        ++ramp_list;
 
                /* Check for exact match. */
-               if (db >= required_db) {
+               if (db == required_db) {
                        return duration;
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/player/Thread.cxx 
new/mpd-0.21.24/src/player/Thread.cxx
--- old/mpd-0.21.23/src/player/Thread.cxx       2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/player/Thread.cxx       2020-06-10 22:48:50.000000000 
+0200
@@ -223,7 +223,8 @@
         *
         * Caller must lock the mutex.
         */
-       void StartDecoder(std::shared_ptr<MusicPipe> pipe) noexcept;
+       void StartDecoder(std::shared_ptr<MusicPipe> pipe,
+                         bool initial_seek_essential) noexcept;
 
        /**
         * The decoder has acknowledged the "START" command (see
@@ -364,7 +365,8 @@
 };
 
 void
-Player::StartDecoder(std::shared_ptr<MusicPipe> _pipe) noexcept
+Player::StartDecoder(std::shared_ptr<MusicPipe> _pipe,
+                    bool initial_seek_essential) noexcept
 {
        assert(queued || pc.command == PlayerCommand::SEEK);
        assert(pc.next_song != nullptr);
@@ -376,6 +378,7 @@
 
        dc.Start(std::make_unique<DetachedSong>(*pc.next_song),
                 start_time, pc.next_song->GetEndTime(),
+                initial_seek_essential,
                 buffer, std::move(_pipe));
 }
 
@@ -633,7 +636,7 @@
                pipe->Clear();
 
                /* re-start the decoder */
-               StartDecoder(pipe);
+               StartDecoder(pipe, true);
                ActivateDecoder();
 
                pc.seeking = true;
@@ -711,7 +714,7 @@
                pc.CommandFinished();
 
                if (dc.IsIdle())
-                       StartDecoder(std::make_shared<MusicPipe>());
+                       StartDecoder(std::make_shared<MusicPipe>(), false);
 
                break;
 
@@ -982,7 +985,7 @@
 
        const std::lock_guard<Mutex> lock(pc.mutex);
 
-       StartDecoder(pipe);
+       StartDecoder(pipe, true);
        ActivateDecoder();
 
        pc.state = PlayerState::PLAY;
@@ -1022,7 +1025,7 @@
 
                        assert(dc.pipe == nullptr || dc.pipe == pipe);
 
-                       StartDecoder(std::make_shared<MusicPipe>());
+                       StartDecoder(std::make_shared<MusicPipe>(), false);
                }
 
                if (/* no cross-fading if MPD is going to pause at the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/storage/StorageState.cxx 
new/mpd-0.21.24/src/storage/StorageState.cxx
--- old/mpd-0.21.23/src/storage/StorageState.cxx        2020-04-23 
17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/storage/StorageState.cxx        2020-06-10 
22:48:50.000000000 +0200
@@ -33,9 +33,16 @@
 #include "Instance.hxx"
 #include "Log.hxx"
 
-#include <set>
+#ifdef __clang__
+/* ignore -Wcomma due to strange code in boost/array.hpp (in Boost
+   1.72) */
+#pragma GCC diagnostic ignored "-Wcomma"
+#endif
+
 #include <boost/crc.hpp>
 
+#include <set>
+
 #define MOUNT_STATE_BEGIN        "mount_begin"
 #define MOUNT_STATE_END          "mount_end"
 #define MOUNT_STATE_STORAGE_URI  "uri: "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/thread/Util.cxx 
new/mpd-0.21.24/src/thread/Util.cxx
--- old/mpd-0.21.23/src/thread/Util.cxx 2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/thread/Util.cxx 2020-06-10 22:48:50.000000000 +0200
@@ -94,7 +94,7 @@
 #elif defined(_WIN32)
        SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE);
 #endif
-};
+}
 
 void
 SetThreadRealtime()
@@ -111,4 +111,4 @@
        if (linux_sched_setscheduler(0, policy, &sched_param) < 0)
                throw MakeErrno("sched_setscheduler failed");
 #endif // __linux__
-};
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/util/Math.hxx 
new/mpd-0.21.24/src/util/Math.hxx
--- old/mpd-0.21.23/src/util/Math.hxx   2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/src/util/Math.hxx   2020-06-10 22:48:50.000000000 +0200
@@ -36,7 +36,7 @@
  * C99 math can be optionally omitted with gcc's libstdc++.
  * Use boost if unavailable.
  */
-#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) && 
!defined(_GLIBCXX_USE_C99_MATH)
+#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) && 
!defined(_GLIBCXX_USE_C99_MATH_TR1)
 #include <boost/math/special_functions/round.hpp>
 using boost::math::lround;
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/util/StringFormat.hxx 
new/mpd-0.21.24/src/util/StringFormat.hxx
--- old/mpd-0.21.23/src/util/StringFormat.hxx   2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/util/StringFormat.hxx   2020-06-10 22:48:50.000000000 
+0200
@@ -30,7 +30,7 @@
 #ifndef STRING_FORMAT_HXX
 #define STRING_FORMAT_HXX
 
-#include "StringBuffer.hxx"
+#include "StringBuffer.hxx" // IWYU pragma: export
 
 #include <stdio.h>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/util/TemplateString.hxx 
new/mpd-0.21.24/src/util/TemplateString.hxx
--- old/mpd-0.21.23/src/util/TemplateString.hxx 2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/util/TemplateString.hxx 2020-06-10 22:48:50.000000000 
+0200
@@ -121,6 +121,6 @@
 
        template<>
        struct Concat<> : Empty {};
-};
+}
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/src/util/WStringAPI.hxx 
new/mpd-0.21.24/src/util/WStringAPI.hxx
--- old/mpd-0.21.23/src/util/WStringAPI.hxx     2020-04-23 17:46:20.000000000 
+0200
+++ new/mpd-0.21.24/src/util/WStringAPI.hxx     2020-06-10 22:48:50.000000000 
+0200
@@ -32,7 +32,7 @@
 
 #include "Compiler.h"
 
-#include <wchar.h>
+#include <cwchar>
 
 gcc_pure gcc_nonnull_all
 static inline size_t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.21.23/win32/build.py 
new/mpd-0.21.24/win32/build.py
--- old/mpd-0.21.23/win32/build.py      2020-04-23 17:46:20.000000000 +0200
+++ new/mpd-0.21.24/win32/build.py      2020-06-10 22:48:50.000000000 +0200
@@ -96,6 +96,9 @@
     zlib,
     libid3tag,
     liblame,
+    libmodplug,
+    wildmidi,
+    gme,
     ffmpeg,
     curl,
     libexpat,


Reply via email to