Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mpd for openSUSE:Factory checked in 
at 2025-11-04 18:41:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mpd (Old)
 and      /work/SRC/openSUSE:Factory/.mpd.new.1980 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mpd"

Tue Nov  4 18:41:58 2025 rev:59 rq:1315366 version:0.24.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/mpd/mpd.changes  2025-08-15 21:52:48.689993740 
+0200
+++ /work/SRC/openSUSE:Factory/.mpd.new.1980/mpd.changes        2025-11-04 
18:42:44.466397149 +0100
@@ -1,0 +2,11 @@
+Mon Nov  3 18:00:22 UTC 2025 - llyyr <[email protected]>
+
+- Updated to 0.24.6
+  * https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/v0.24.6/NEWS
+  * decoder
+    * ffmpeg: handle "*.opus" files
+    * mpg123: another workaround for libmpg123 ID3 corruption bug
+    * opus: fix seeking in files with large OpusTags
+    * opus, vorbis: remove METADATA_BLOCK_PICTURE size limit
+
+-------------------------------------------------------------------

Old:
----
  mpd-0.24.5.tar.xz
  mpd-0.24.5.tar.xz.sig

New:
----
  mpd-0.24.6.tar.xz
  mpd-0.24.6.tar.xz.sig

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

Other differences:
------------------
++++++ mpd.spec ++++++
--- /var/tmp/diff_new_pack.xinfaN/_old  2025-11-04 18:42:45.466439249 +0100
+++ /var/tmp/diff_new_pack.xinfaN/_new  2025-11-04 18:42:45.470439417 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package mpd
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define ver 0.24
 Name:           mpd
-Version:        %{ver}.5
+Version:        %{ver}.6
 Release:        0
 Summary:        Music Player Daemon
 License:        GPL-2.0-or-later

++++++ mpd-0.24.5.tar.xz -> mpd-0.24.6.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/.github/workflows/build.yml 
new/mpd-0.24.6/.github/workflows/build.yml
--- old/mpd-0.24.5/.github/workflows/build.yml  2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/.github/workflows/build.yml  2025-10-20 12:47:45.000000000 
+0200
@@ -72,7 +72,7 @@
 
     steps:
       - id: checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@v5
 
       - name: Install dependencies
         run: |
@@ -205,7 +205,7 @@
 
     steps:
       - id: checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@v5
 
       - name: Install dependencies
         run: |
@@ -272,7 +272,7 @@
     runs-on: windows-latest
     steps:
       - id: checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@v5
 
       - uses: msys2/setup-msys2@v2
         with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/.github/workflows/build_android.yml 
new/mpd-0.24.6/.github/workflows/build_android.yml
--- old/mpd-0.24.5/.github/workflows/build_android.yml  2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/.github/workflows/build_android.yml  2025-10-20 
12:47:45.000000000 +0200
@@ -40,7 +40,7 @@
     runs-on: ubuntu-24.04
     steps:
       - id: checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@v5
 
       - name: Install dependencies
         run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/NEWS new/mpd-0.24.6/NEWS
--- old/mpd-0.24.5/NEWS 2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/NEWS 2025-10-20 12:47:45.000000000 +0200
@@ -1,3 +1,10 @@
+ver 0.24.6 (2025/10/20)
+* decoder
+  - ffmpeg: handle "*.opus" files
+  - mpg123: another workaround for libmpg123 ID3 corruption bug
+  - opus: fix seeking in files with large OpusTags
+  - opus, vorbis: remove METADATA_BLOCK_PICTURE size limit
+
 ver 0.24.5 (2025/07/31)
 * database
   - fix disappearing playlist files
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/meson.build new/mpd-0.24.6/meson.build
--- old/mpd-0.24.5/meson.build  2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/meson.build  2025-10-20 12:47:45.000000000 +0200
@@ -1,7 +1,7 @@
 project(
   'mpd',
   ['c', 'cpp'],
-  version: '0.24.5',
+  version: '0.24.6',
   meson_version: '>= 1.0',
   default_options: [
     'c_std=c11',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/python/build/libs.py 
new/mpd-0.24.6/python/build/libs.py
--- old/mpd-0.24.5/python/build/libs.py 2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/python/build/libs.py 2025-10-20 12:47:45.000000000 +0200
@@ -36,8 +36,8 @@
 )
 
 libopenmpt = AutotoolsProject(
-    
'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.7.13+release.autotools.tar.gz',
-    'dcd7cde4f9c498eb496c4556e1c1b81353e2a74747e8270a42565117ea42e1f1',
+    
'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.8.3+release.autotools.tar.gz',
+    
'0b18a9b67674e300f4915f52ef902a9bb184b96a0d93efbc2058ec9526dc97039e0da53d9605e7fda97c46734529813008c2110e2cb4822e04e411444ff21db9',
     'lib/libopenmpt.a',
     [
         '--disable-shared', '--enable-static',
@@ -49,7 +49,7 @@
         '--without-portaudio', '--without-portaudiocpp', '--without-sndfile',
         '--without-flac',
     ],
-    base='libopenmpt-0.7.13+release.autotools',
+    base='libopenmpt-0.8.3+release.autotools',
 )
 
 wildmidi = CmakeProject(
@@ -79,8 +79,8 @@
 )
 
 ffmpeg = FfmpegProject(
-    'http://ffmpeg.org/releases/ffmpeg-7.1.1.tar.xz',
-    '733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1',
+    'http://ffmpeg.org/releases/ffmpeg-8.0.tar.xz',
+    'b2751fccb6cc4c77708113cd78b561059b6fa904b24162fa0be2d60273d27b8e',
     'lib/libavcodec.a',
     [
         '--disable-shared', '--enable-static',
@@ -92,7 +92,6 @@
         '--disable-avdevice',
         '--disable-swresample',
         '--disable-swscale',
-        '--disable-postproc',
         '--disable-avfilter',
         '--disable-faan',
         '--disable-pixelutils',
@@ -107,8 +106,10 @@
 
         '--disable-sdl2',
         '--disable-vulkan',
+        '--disable-videotoolbox',
         '--disable-xlib',
 
+        '--disable-parser=av1',
         '--disable-parser=bmp',
         '--disable-parser=cavsvideo',
         '--disable-parser=dvbsub',
@@ -127,9 +128,8 @@
         '--disable-parser=mpeg4video',
         '--disable-parser=mpegvideo',
         '--disable-parser=opus',
+        '--disable-parser=prores',
         '--disable-parser=qoi',
-        '--disable-parser=rv30',
-        '--disable-parser=rv40',
         '--disable-parser=vc1',
         '--disable-parser=vp3',
         '--disable-parser=vp8',
@@ -139,6 +139,8 @@
         '--disable-parser=webp',
         '--disable-parser=xma',
 
+        '--disable-demuxer=av1',
+        '--disable-demuxer=avi',
         '--disable-demuxer=aqtitle',
         '--disable-demuxer=ass',
         '--disable-demuxer=bethsoftvid',
@@ -147,6 +149,7 @@
         '--disable-demuxer=cdxl',
         '--disable-demuxer=dvbsub',
         '--disable-demuxer=dvbtxt',
+        '--disable-demuxer=dvdvideo',
         '--disable-demuxer=h261',
         '--disable-demuxer=h263',
         '--disable-demuxer=h264',
@@ -210,6 +213,8 @@
         '--disable-demuxer=tedcaptions',
         '--disable-demuxer=vobsub',
         '--disable-demuxer=vplayer',
+        '--disable-demuxer=vc1t',
+        '--disable-demuxer=vpk',
         '--disable-demuxer=webm_dash_manifest',
         '--disable-demuxer=webvtt',
         '--disable-demuxer=yuv4mpegpipe',
@@ -240,6 +245,9 @@
         '--disable-decoder=qdmc',
 
         # disable lots of image and video codecs
+        '--disable-decoder=av1',
+        '--disable-decoder=av1_amf',
+        '--disable-decoder=av1_cuvid',
         '--disable-decoder=acelp_kelvin',
         '--disable-decoder=agm',
         '--disable-decoder=aic',
@@ -256,7 +264,6 @@
         '--disable-decoder=avrn',
         '--disable-decoder=avrp',
         '--disable-decoder=avui',
-        '--disable-decoder=ayuv',
         '--disable-decoder=bethsoftvid',
         '--disable-decoder=bfi',
         '--disable-decoder=bink',
@@ -320,9 +327,12 @@
         '--disable-decoder=h263',
         '--disable-decoder=h263i',
         '--disable-decoder=h263p',
+        '--disable-decoder=h263_v4l2m2m',
         '--disable-decoder=h264',
+        '--disable-decoder=h264_v4l2m2m',
         '--disable-decoder=hap',
         '--disable-decoder=hevc',
+        '--disable-decoder=hevc_v4l2m2m',
         '--disable-decoder=hnm4_video',
         '--disable-decoder=hq_hqa',
         '--disable-decoder=hqx',
@@ -360,12 +370,14 @@
         '--disable-decoder=motionpixels',
         '--disable-decoder=movtext',
         '--disable-decoder=mpeg1video',
+        '--disable-decoder=mpeg1_v4l2m2m',
         '--disable-decoder=mpeg2video',
+        '--disable-decoder=mpeg2_v4l2m2m',
         '--disable-decoder=mpeg4',
+        '--disable-decoder=mpeg4_v4l2m2m',
         '--disable-decoder=mpegvideo',
         '--disable-decoder=msa1',
         '--disable-decoder=mscc',
-        '--disable-decoder=msmpeg4_crystalhd',
         '--disable-decoder=msmpeg4v1',
         '--disable-decoder=msmpeg4v2',
         '--disable-decoder=msmpeg4v3',
@@ -402,6 +414,7 @@
         '--disable-decoder=pjs',
         '--disable-decoder=ppm',
         '--disable-decoder=prores',
+        '--disable-decoder=prores_raw',
         '--disable-decoder=prosumer',
         '--disable-decoder=psd',
         '--disable-decoder=ptx',
@@ -448,6 +461,7 @@
         '--disable-decoder=targa',
         '--disable-decoder=targa_y216',
         '--disable-decoder=text',
+        '--disable-decoder=theora',
         '--disable-decoder=tiff',
         '--disable-decoder=tiertexseqvideo',
         '--disable-decoder=tmv',
@@ -469,15 +483,35 @@
         '--disable-decoder=vble',
         '--disable-decoder=vbn',
         '--disable-decoder=vc1',
+        '--disable-decoder=vc1image',
+        '--disable-decoder=vc1_cuvid',
+        '--disable-decoder=vc1_mmal',
+        '--disable-decoder=vc1_qsv',
+        '--disable-decoder=vc1_v4l2m2m',
         '--disable-decoder=vcr1',
         '--disable-decoder=vmdvideo',
         '--disable-decoder=vmnc',
         '--disable-decoder=vp3',
+        '--disable-decoder=vp4',
         '--disable-decoder=vp5',
         '--disable-decoder=vp6',
+        '--disable-decoder=vp6a',
+        '--disable-decoder=vp6f',
         '--disable-decoder=vp7',
         '--disable-decoder=vp8',
+        '--disable-decoder=vp8_cuvid',
+        '--disable-decoder=vp8_mediacodec',
+        '--disable-decoder=vp8_qsv',
+        '--disable-decoder=vp8_rkmpp',
+        '--disable-decoder=vp8_v4l2m2m',
         '--disable-decoder=vp9',
+        '--disable-decoder=vp9_amf',
+        '--disable-decoder=vp9_cuvid',
+        '--disable-decoder=vp9_mediacodec',
+        '--disable-decoder=vp9_qsv',
+        '--disable-decoder=vp9_rkmpp',
+        '--disable-decoder=vp9_v4l2m2m',
+        '--disable-decoder=vp9_vucid',
         '--disable-decoder=vplayer',
         '--disable-decoder=vqa',
         '--disable-decoder=webvtt',
@@ -517,6 +551,7 @@
         '--disable-bsf=mjpeg2jpeg',
         '--disable-bsf=opus_metadata',
         '--disable-bsf=pgs_frame_merge',
+        '--disable-bsf=prores',
         '--disable-bsf=text2movsub',
         '--disable-bsf=vp9_metadata',
         '--disable-bsf=vp9_raw_reorder',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.24.5/src/decoder/plugins/FfmpegDecoderPlugin.cxx 
new/mpd-0.24.6/src/decoder/plugins/FfmpegDecoderPlugin.cxx
--- old/mpd-0.24.5/src/decoder/plugins/FfmpegDecoderPlugin.cxx  2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/FfmpegDecoderPlugin.cxx  2025-10-20 
12:47:45.000000000 +0200
@@ -717,12 +717,18 @@
 
        void *codec_opaque = nullptr;
        while (const auto codec = av_codec_iterate(&codec_opaque)) {
+               if (codec->type != AVMEDIA_TYPE_AUDIO)
+                       continue;
+
                if (StringStartsWith(codec->name, "dsd_"sv)) {
                        /* FFmpeg was compiled with DSD support */
                        suffixes.emplace("dff"sv);
                        suffixes.emplace("dsf"sv);
                } else if (StringIsEqual(codec->name, "dst")) {
                        suffixes.emplace("dst"sv);
+               } else if (StringIsEqual(codec->name, "opus") ||
+                          StringIsEqual(codec->name, "libopus")) {
+                       suffixes.emplace("opus"sv);
                } else if (StringStartsWith(codec->name, "wma"sv)) {
                        /* there are codecs "wmav1", "wmav2" etc. and
                           they usually come in "*.wma" files */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.24.5/src/decoder/plugins/Mpg123DecoderPlugin.cxx 
new/mpd-0.24.6/src/decoder/plugins/Mpg123DecoderPlugin.cxx
--- old/mpd-0.24.5/src/decoder/plugins/Mpg123DecoderPlugin.cxx  2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/Mpg123DecoderPlugin.cxx  2025-10-20 
12:47:45.000000000 +0200
@@ -474,6 +474,7 @@
 #ifdef ENABLE_ID3TAG
        /* prepare for using mpg123_id3_raw() later */
        mpg123_param(&handle, MPG123_ADD_FLAGS, MPG123_STORE_RAW_ID3, 0);
+       mpg123_param(&handle, MPG123_ADD_FLAGS, MPG123_SKIP_ID3V2, 0);
 #endif
 
        if (full_scan)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OggDecoder.cxx 
new/mpd-0.24.6/src/decoder/plugins/OggDecoder.cxx
--- old/mpd-0.24.5/src/decoder/plugins/OggDecoder.cxx   2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/OggDecoder.cxx   2025-10-20 
12:47:45.000000000 +0200
@@ -75,7 +75,7 @@
        static const ogg_int64_t MARGIN_BEFORE = 44100 / 3;
        static const ogg_int64_t MARGIN_AFTER = 44100 / 10;
 
-       offset_type min_offset = 0, max_offset = input_stream.GetSize();
+       offset_type min_offset = first_offset, max_offset = 
input_stream.GetSize();
        ogg_int64_t min_granule = 0, max_granule = end_granulepos;
 
        while (true) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OggDecoder.hxx 
new/mpd-0.24.6/src/decoder/plugins/OggDecoder.hxx
--- old/mpd-0.24.5/src/decoder/plugins/OggDecoder.hxx   2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/OggDecoder.hxx   2025-10-20 
12:47:45.000000000 +0200
@@ -9,6 +9,23 @@
 #include "input/Offset.hxx"
 
 class OggDecoder : public OggVisitor {
+       /**
+        * The file offset of the first audio packet (starts at
+        * granulepos 0).  This is used by SeekGranulePos() to
+        * interpolate the seek offset between this offset and
+        * end-of-file, possibly skipping (large) tags preceding the
+        * first audio packet.
+        */
+       offset_type first_offset = 0;
+
+       /**
+        * The granulepos at the end of the last packet.  This is used
+        * to calculate the song duration and to calculate seek file
+        * offsets.
+        *
+        * This field is uninitialized until UpdateEndGranulePos() is
+        * called.
+        */
        ogg_int64_t end_granulepos;
 
 protected:
@@ -30,6 +47,25 @@
        ogg_int64_t LoadEndGranulePos() const;
 
 protected:
+       bool HasFirstOffset() const noexcept {
+               return first_offset > 0;
+       }
+
+       void SetFirstOffset(offset_type _first_offset) noexcept {
+               first_offset = _first_offset;
+       }
+
+       /**
+        * If currently unset, set the #first_offset field to the
+        * start of the most recent Ogg page.  Decoder implementations
+        * should call this when they see the first page/packet
+        * containing audio data.
+        */
+       void AutoSetFirstOffset() noexcept {
+               if (!HasFirstOffset())
+                       SetFirstOffset(GetStartOffset());
+       }
+
        ogg_int64_t UpdateEndGranulePos() {
                return end_granulepos = LoadEndGranulePos();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OpusDecoderPlugin.cxx 
new/mpd-0.24.6/src/decoder/plugins/OpusDecoderPlugin.cxx
--- old/mpd-0.24.5/src/decoder/plugins/OpusDecoderPlugin.cxx    2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/OpusDecoderPlugin.cxx    2025-10-20 
12:47:45.000000000 +0200
@@ -113,6 +113,14 @@
         */
        bool submitted_replay_gain = false;
 
+       /**
+        * This is true if a SEEK command was received from
+        * DecoderClient::Ready().  We continue reading until we see
+        * the first packet in order to apply ReplayGain and find the
+        * file offset of the first audio packet.
+        */
+       bool initial_seek = false;
+
 public:
        explicit MPDOpusDecoder(DecoderReader &reader)
                :OggDecoder(reader) {}
@@ -230,8 +238,17 @@
                                               * audio_format.channels];
 
        auto cmd = client.GetCommand();
-       if (cmd != DecoderCommand::NONE)
+       if (cmd != DecoderCommand::NONE) {
+               if (cmd == DecoderCommand::SEEK) {
+                       /* postpone the seek until we have found the
+                          first packet with audio data, i.e. after
+                          the AutoSetFirstOffset() call */
+                       initial_seek = true;
+                       return;
+               }
+
                throw cmd;
+       }
 }
 
 void
@@ -274,7 +291,8 @@
        if (!tag_builder.empty()) {
                Tag tag = tag_builder.Commit();
                auto cmd = client.SubmitTag(input_stream, std::move(tag));
-               if (cmd != DecoderCommand::NONE)
+               if (cmd != DecoderCommand::NONE &&
+                   (cmd != DecoderCommand::SEEK || !initial_seek))
                        throw cmd;
        }
 }
@@ -296,6 +314,16 @@
                submitted_replay_gain = true;
        }
 
+       AutoSetFirstOffset();
+
+       if (initial_seek) {
+               /* now that AutoSetFirstOffset() was called, we can do
+                  the seek (don't bother to waste time on decoding
+                  audio data) */
+               initial_seek = false;
+               throw DecoderCommand::SEEK;
+       }
+
        int nframes = opus_decode(opus_decoder,
                                  (const unsigned char*)packet.packet,
                                  packet.bytes,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mpd-0.24.5/src/decoder/plugins/VorbisDecoderPlugin.cxx 
new/mpd-0.24.6/src/decoder/plugins/VorbisDecoderPlugin.cxx
--- old/mpd-0.24.5/src/decoder/plugins/VorbisDecoderPlugin.cxx  2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/decoder/plugins/VorbisDecoderPlugin.cxx  2025-10-20 
12:47:45.000000000 +0200
@@ -268,6 +268,8 @@
                        vorbis_block_init(&dsp, &block);
                }
 
+               AutoSetFirstOffset();
+
                if (vorbis_synthesis(&block, &packet) != 0) {
                        /* ignore bad packets, but give the MPD core a
                           chance to stop us */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/event/Loop.cxx 
new/mpd-0.24.6/src/event/Loop.cxx
--- old/mpd-0.24.5/src/event/Loop.cxx   2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/event/Loop.cxx   2025-10-20 12:47:45.000000000 +0200
@@ -415,7 +415,12 @@
            io_uring_prep_poll_multishot() is edge-triggered, so we
            have to consume all events to rearm it */
 
-       if (!epoll_ready) {
+       if (epoll_ready)
+               /* don't wait for io_uring completions if epoll is
+                  still ready */
+               timeout = Event::Duration{0};
+
+       {
                struct __kernel_timespec timeout_buffer;
                auto *kernel_timeout = ExportTimeoutKernelTimespec(timeout, 
timeout_buffer);
                Uring::Queue &uring_queue = *uring;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/event/ServerSocket.cxx 
new/mpd-0.24.6/src/event/ServerSocket.cxx
--- old/mpd-0.24.5/src/event/ServerSocket.cxx   2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/src/event/ServerSocket.cxx   2025-10-20 12:47:45.000000000 
+0200
@@ -15,7 +15,7 @@
 #include "net/Resolver.hxx"
 #include "net/AddressInfo.hxx"
 #include "event/SocketEvent.hxx"
-#include "fs/AllocatedPath.hxx"
+#include "fs/Path.hxx"
 #include "util/Domain.hxx"
 #include "Log.hxx"
 
@@ -33,10 +33,6 @@
 
        const unsigned serial;
 
-#ifdef HAVE_UN
-       AllocatedPath path;
-#endif
-
        const AllocatedSocketAddress address;
 
 public:
@@ -47,9 +43,6 @@
                :parent(_parent),
                 event(_loop, BIND_THIS_METHOD(OnSocketReady)),
                 serial(_serial),
-#ifdef HAVE_UN
-                path(nullptr),
-#endif
                 address(std::forward<A>(_address))
        {
        }
@@ -65,14 +58,6 @@
                return serial;
        }
 
-#ifdef HAVE_UN
-       void SetPath(AllocatedPath &&_path) noexcept {
-               assert(path.IsNull());
-
-               path = std::move(_path);
-       }
-#endif
-
        [[nodiscard]] bool IsDefined() const noexcept {
                return event.IsDefined();
        }
@@ -157,8 +142,8 @@
 #ifdef HAVE_UN
        /* allow everybody to connect */
 
-       if (!path.IsNull())
-               chmod(path.c_str(), 0666);
+       if (const char *path = address.GetLocalPath())
+               chmod(path, 0666);
 #endif
 
        /* register in the EventLoop */ 
@@ -345,7 +330,7 @@
 }
 
 void
-ServerSocket::AddPath(AllocatedPath &&path)
+ServerSocket::AddPath(Path path)
 {
 #ifdef HAVE_UN
        unlink(path.c_str());
@@ -353,8 +338,7 @@
        AllocatedSocketAddress address;
        address.SetLocal(path.c_str());
 
-       OneServerSocket &s = AddAddress(std::move(address));
-       s.SetPath(std::move(path));
+       AddAddress(std::move(address));
 #else /* !HAVE_UN */
        (void)path;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/event/ServerSocket.hxx 
new/mpd-0.24.6/src/event/ServerSocket.hxx
--- old/mpd-0.24.5/src/event/ServerSocket.hxx   2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/src/event/ServerSocket.hxx   2025-10-20 12:47:45.000000000 
+0200
@@ -13,7 +13,7 @@
 class AllocatedSocketAddress;
 class UniqueSocketDescriptor;
 class EventLoop;
-class AllocatedPath;
+class Path;
 
 /**
  * A socket that accepts incoming stream connections (e.g. TCP).
@@ -97,7 +97,7 @@
         *
         * @param path the absolute socket path
         */
-       void AddPath(AllocatedPath &&path);
+       void AddPath(Path path);
 
        /**
         * Add a listener on an abstract local socket (Linux specific).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/OggSyncState.cxx 
new/mpd-0.24.6/src/lib/xiph/OggSyncState.cxx
--- old/mpd-0.24.5/src/lib/xiph/OggSyncState.cxx        2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/lib/xiph/OggSyncState.cxx        2025-10-20 
12:47:45.000000000 +0200
@@ -51,7 +51,7 @@
 bool
 OggSyncState::ExpectPageSeek(ogg_page &page)
 {
-       size_t remaining_skipped = 65536;
+       size_t remaining_skipped = 1024 * 1024;
 
        while (true) {
                int r = ogg_sync_pageseek(&oy, &page);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/VorbisComments.cxx 
new/mpd-0.24.6/src/lib/xiph/VorbisComments.cxx
--- old/mpd-0.24.5/src/lib/xiph/VorbisComments.cxx      2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/lib/xiph/VorbisComments.cxx      2025-10-20 
12:47:45.000000000 +0200
@@ -18,6 +18,8 @@
 #include <tremor/ivorbiscodec.h>
 #endif /* HAVE_TREMOR */
 
+using std::string_view_literals::operator""sv;
+
 template<typename F>
 static void
 ForEachUserComment(const vorbis_comment &vc, F &&f)
@@ -49,11 +51,11 @@
 static void
 vorbis_scan_comment(std::string_view comment, TagHandler &handler) noexcept
 {
-       const auto picture_b64 = handler.WantPicture()
-               ? GetVorbisCommentValue(comment, "METADATA_BLOCK_PICTURE")
-               : std::string_view{};
-       if (picture_b64.data() != nullptr)
-               return ScanVorbisPicture(picture_b64, handler);
+       if (handler.WantPicture()) {
+               if (const auto picture_b64 = GetVorbisCommentValue(comment, 
"METADATA_BLOCK_PICTURE"sv);
+                   picture_b64.data() != nullptr)
+                       return ScanVorbisPicture(picture_b64, handler);
+       }
 
        ScanVorbisComment(comment, handler);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/VorbisPicture.cxx 
new/mpd-0.24.6/src/lib/xiph/VorbisPicture.cxx
--- old/mpd-0.24.5/src/lib/xiph/VorbisPicture.cxx       2025-07-31 
21:58:34.000000000 +0200
+++ new/mpd-0.24.6/src/lib/xiph/VorbisPicture.cxx       2025-10-20 
12:47:45.000000000 +0200
@@ -11,10 +11,6 @@
 ScanVorbisPicture(std::string_view value, TagHandler &handler) noexcept
 {
 #ifdef HAVE_BASE64
-       if (value.size() > 1024 * 1024)
-               /* ignore image files which are too huge */
-               return;
-
        try {
                return ScanId3Apic(DecodeBase64(value), handler);
        } catch (...) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/src/neighbor/Glue.cxx 
new/mpd-0.24.6/src/neighbor/Glue.cxx
--- old/mpd-0.24.5/src/neighbor/Glue.cxx        2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/src/neighbor/Glue.cxx        2025-10-20 12:47:45.000000000 
+0200
@@ -57,7 +57,7 @@
                        for (auto k = explorers.begin(); k != i; ++k)
                                k->explorer->Close();
 
-                       std::throw_with_nested(FmtRuntimeError("Failed to open 
neighblor plugin {:?}",
+                       std::throw_with_nested(FmtRuntimeError("Failed to open 
neighbor plugin {:?}",
                                                               i->name));
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/.gitignore 
new/mpd-0.24.6/subprojects/.gitignore
--- old/mpd-0.24.5/subprojects/.gitignore       2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/.gitignore       2025-10-20 12:47:45.000000000 
+0200
@@ -1,4 +1,5 @@
 /packagecache/
+/.wraplock
 
 /curl-*/
 /expat-*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/expat.wrap 
new/mpd-0.24.6/subprojects/expat.wrap
--- old/mpd-0.24.5/subprojects/expat.wrap       2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/expat.wrap       2025-10-20 12:47:45.000000000 
+0200
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = expat-2.7.1
-source_url = 
https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz
-source_filename = expat-2.7.1.tar.bz2
-source_hash = 354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30
-patch_filename = expat_2.7.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.1-1/get_patch
-patch_hash = fe28cbbc427a7c9787d08b969ad54d19f59d8dd18294b4a18651cecfc789d4ef
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.1-1/expat-2.7.1.tar.bz2
-wrapdb_version = 2.7.1-1
+directory = expat-2.7.3
+source_url = 
https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-2.7.3.tar.xz
+source_filename = expat-2.7.3.tar.bz2
+source_hash = 71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.3-1/expat-2.7.3.tar.bz2
+patch_filename = expat_2.7.3-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.3-1/get_patch
+patch_hash = e870eb4b2e3c142ce1d18ed24309aa40e07c6c911a4625fa1c6fc493ba18153a
+wrapdb_version = 2.7.3-1
 
 [provide]
 expat = expat_dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/flac.wrap 
new/mpd-0.24.6/subprojects/flac.wrap
--- old/mpd-0.24.5/subprojects/flac.wrap        2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/flac.wrap        2025-10-20 12:47:45.000000000 
+0200
@@ -3,11 +3,11 @@
 source_url = 
https://github.com/xiph/flac/releases/download/1.5.0/flac-1.5.0.tar.xz
 source_filename = flac-1.5.0.tar.xz
 source_hash = f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920
-patch_filename = flac_1.5.0-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/flac_1.5.0-1/get_patch
-patch_hash = c3d7dcb01d6e0a2bc066b12e789661fd9c4356500787004cfc1950d52babd6ca
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/flac_1.5.0-1/flac-1.5.0.tar.xz
-wrapdb_version = 1.5.0-1
+patch_filename = flac_1.5.0-2_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/flac_1.5.0-2/get_patch
+patch_hash = ee4cd8175784b4032e3b19dda1fe4c1d6d4b285dfa87fe94361f1a6fde732ff0
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/flac_1.5.0-2/flac-1.5.0.tar.xz
+wrapdb_version = 1.5.0-2
 
 [provide]
 flac = flac_dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/fmt.wrap 
new/mpd-0.24.6/subprojects/fmt.wrap
--- old/mpd-0.24.5/subprojects/fmt.wrap 2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/subprojects/fmt.wrap 2025-10-20 12:47:45.000000000 +0200
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = fmt-11.2.0
-source_url = https://github.com/fmtlib/fmt/archive/11.2.0.tar.gz
-source_filename = fmt-11.2.0.tar.gz
-source_hash = bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af
-patch_filename = fmt_11.2.0-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/fmt_11.2.0-1/get_patch
-patch_hash = 645bf1c335a24608b4b34f16ed10b9237bbb0131488668fb86454202239e086c
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/fmt_11.2.0-1/fmt-11.2.0.tar.gz
-wrapdb_version = 11.2.0-1
+directory = fmt-12.0.0
+source_url = https://github.com/fmtlib/fmt/archive/12.0.0.tar.gz
+source_filename = fmt-12.0.0.tar.gz
+source_hash = aa3e8fbb6a0066c03454434add1f1fc23299e85758ceec0d7d2d974431481e40
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/fmt_12.0.0-1/fmt-12.0.0.tar.gz
+patch_filename = fmt_12.0.0-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/fmt_12.0.0-1/get_patch
+patch_hash = 307f288ebf3850abf2f0c50ac1fb07de97df9538d39146d802f3c0d6cada8998
+wrapdb_version = 12.0.0-1
 
 [provide]
-fmt = fmt_dep
+dependency_names = fmt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/gtest.wrap 
new/mpd-0.24.6/subprojects/gtest.wrap
--- old/mpd-0.24.5/subprojects/gtest.wrap       2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/gtest.wrap       2025-10-20 12:47:45.000000000 
+0200
@@ -3,11 +3,11 @@
 source_url = 
https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz
 source_filename = googletest-1.17.0.tar.gz
 source_hash = 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c
-patch_filename = gtest_1.17.0-3_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.17.0-3/get_patch
-patch_hash = 3e2799683f27c6dce138b7bae823416581c467ddde755c9a516c0863225f0ceb
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/gtest_1.17.0-3/googletest-1.17.0.tar.gz
-wrapdb_version = 1.17.0-3
+patch_filename = gtest_1.17.0-4_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.17.0-4/get_patch
+patch_hash = 3abf7662d09db706453a5b064a1e914678c74b9d9b0b19382747ca561d0d8750
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/gtest_1.17.0-4/googletest-1.17.0.tar.gz
+wrapdb_version = 1.17.0-4
 
 [provide]
 gtest = gtest_dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/liburing.wrap 
new/mpd-0.24.6/subprojects/liburing.wrap
--- old/mpd-0.24.5/subprojects/liburing.wrap    2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/liburing.wrap    2025-10-20 12:47:45.000000000 
+0200
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = liburing-liburing-2.5
-source_url = 
https://github.com/axboe/liburing/archive/refs/tags/liburing-2.5.tar.gz
-source_filename = liburing-2.5.tar.gz
-source_hash = 456f5f882165630f0dc7b75e8fd53bd01a955d5d4720729b4323097e6e9f2a98
-patch_filename = liburing_2.5-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/liburing_2.5-2/get_patch
-patch_hash = b502734fe6c1ce8318fe22b549883a1a0fee47ac13ae22cbc239191fe8baf4d0
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/liburing_2.5-2/liburing-2.5.tar.gz
-wrapdb_version = 2.5-2
+directory = liburing-liburing-2.12
+source_url = 
https://github.com/axboe/liburing/archive/refs/tags/liburing-2.12.tar.gz
+source_filename = liburing-2.12.tar.gz
+source_hash = f1d10cb058c97c953b4c0c446b11e9177e8c8b32a5a88b309f23fdd389e26370
+patch_filename = liburing_2.12-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/liburing_2.12-1/get_patch
+patch_hash = b21f90196008cde9ed242571a71d8302c703272a2f8b91edd589bd8d6abea47a
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/liburing_2.12-1/liburing-2.12.tar.gz
+wrapdb_version = 2.12-1
 
 [provide]
 dependency_names = liburing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/subprojects/sqlite3.wrap 
new/mpd-0.24.6/subprojects/sqlite3.wrap
--- old/mpd-0.24.5/subprojects/sqlite3.wrap     2025-07-31 21:58:34.000000000 
+0200
+++ new/mpd-0.24.6/subprojects/sqlite3.wrap     2025-10-20 12:47:45.000000000 
+0200
@@ -1,13 +1,13 @@
 [wrap-file]
-directory = sqlite-amalgamation-3500300
-source_url = https://www.sqlite.org/2025/sqlite-amalgamation-3500300.zip
-source_filename = sqlite-amalgamation-3500300.zip
-source_hash = 9ad6d16cbc1df7cd55c8b55127c82a9bca5e9f287818de6dc87e04e73599d754
-patch_filename = sqlite3_3.50.3-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/sqlite3_3.50.3-1/get_patch
-patch_hash = 3cc51ec6b835d6cd817153a50a834db164d88f0632b22f3c0673e4674fe5a552
-source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/sqlite3_3.50.3-1/sqlite-amalgamation-3500300.zip
-wrapdb_version = 3.50.3-1
+directory = sqlite-amalgamation-3500400
+source_url = https://www.sqlite.org/2025/sqlite-amalgamation-3500400.zip
+source_filename = sqlite-amalgamation-3500400.zip
+source_hash = 1d3049dd0f830a025a53105fc79fd2ab9431aea99e137809d064d8ee8356b032
+patch_filename = sqlite3_3.50.4-1_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/sqlite3_3.50.4-1/get_patch
+patch_hash = 61f23729c411d96d575b8d16c47a454f41b815de585289dec8daf855620ebc3e
+source_fallback_url = 
https://github.com/mesonbuild/wrapdb/releases/download/sqlite3_3.50.4-1/sqlite-amalgamation-3500400.zip
+wrapdb_version = 3.50.4-1
 
 [provide]
 sqlite3 = sqlite3_dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/test/DumpOgg.cxx 
new/mpd-0.24.6/test/DumpOgg.cxx
--- old/mpd-0.24.5/test/DumpOgg.cxx     2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/test/DumpOgg.cxx     2025-10-20 12:47:45.000000000 +0200
@@ -10,14 +10,13 @@
 #include "event/Thread.hxx"
 #include "util/PrintException.hxx"
 
-#include <inttypes.h>
-#include <stdio.h>
+#include <fmt/core.h>
 
 int
 main(int argc, char **argv) noexcept
 try {
        if (argc != 2) {
-               fprintf(stderr, "Usage: DumpOgg FILE\n");
+               fmt::print(stderr, "Usage: DumpOgg FILE\n");
                return EXIT_FAILURE;
        }
 
@@ -41,8 +40,8 @@
                if (!sync.ExpectPage(page))
                        break;
 
-               printf("page offset=%" PRIu64 " serial=%d\n",
-                      sync.GetStartOffset(), ogg_page_serialno(&page));
+               fmt::print("page offset={} serial={}\n",
+                          sync.GetStartOffset(), ogg_page_serialno(&page));
        }
 
        return EXIT_SUCCESS;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/test/meson.build 
new/mpd-0.24.6/test/meson.build
--- old/mpd-0.24.5/test/meson.build     2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/test/meson.build     2025-10-20 12:47:45.000000000 +0200
@@ -490,6 +490,7 @@
     'DumpOgg.cxx',
     include_directories: inc,
     dependencies: [
+      fmt_dep,
       ogg_dep,
       input_glue_dep,
       archive_glue_dep,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpd-0.24.5/test/run_decoder.cxx 
new/mpd-0.24.6/test/run_decoder.cxx
--- old/mpd-0.24.5/test/run_decoder.cxx 2025-07-31 21:58:34.000000000 +0200
+++ new/mpd-0.24.6/test/run_decoder.cxx 2025-10-20 12:47:45.000000000 +0200
@@ -72,7 +72,7 @@
 
        auto args = option_parser.GetRemaining();
        if (args.size() != 2)
-               throw std::runtime_error("Usage: run_decoder [--verbose] 
[--config=FILE] DECODER URI");
+               throw std::runtime_error("Usage: run_decoder [--verbose] 
[--config=FILE] [--seek=POS] ECODER URI");
 
        c.decoder = args[0];
        c.uri = args[1];

Reply via email to