Commit Graph

15541 Commits

Author SHA1 Message Date
Max Kellermann
d466deedad output/alsa: fix lambda indent 2024-07-29 15:28:27 +02:00
Max Kellermann
bbbbf5f4bd event/MultiSocketMonitor: reschedule epoll/EPERM workaround forever
Fixes a regression by commit 3558317dc9 which caused the ALSA null
plugin to cease to work because the workaround timer was never rescheduled.
2024-07-25 20:16:53 +02:00
Max Kellermann
f030b22bec player/thread: wait for the first chunk in CheckCrossFade()
This fixes MixRamp problems which occur because CheckCrossFade() is
called before the decoder has parsed MixRamp tags after
DecoderClient::Ready().

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2084
2024-07-25 20:07:52 +02:00
Max Kellermann
a693052f2c Merge branch 'feat/showmovement' of https://github.com/mayanez/MPD 2024-07-25 14:01:19 +02:00
Miguel A. Arroyo
e3809bd4f0 feat: Add ShowMovement Tag
This commit adds the `SHOWMOVEMENT` [tag](https://picard-docs.musicbrainz.org/en/appendices/tag_mapping.html#show-work-movement-4). Historically, this tag originates from iTunes' MP4, but has since become widely used. It is created by Picard's Classical music [plugins](https://picard-docs.musicbrainz.org/en/variables/variables_classical.html) (such as "Classical Extras" or "Work & Movement").

The reasoning behind this tag is to display Work & Movement titles without redundant information and in a more uniform way. Moreover, it additionally serves as an implicit marker denoting classical music tracks (genre tags aren't sufficient).

If the client so chooses to support this tag, they can display `Work` and `Movement` instead of the track title allowing for cleaner display. Other clients can continue to display the `%title%` as before without any fuss.
2024-07-23 21:09:31 -07:00
Max Kellermann
41cc695848 Instance: fix io/rtio thread mixup
Fixes regression by commit 43d633f560
2024-07-23 15:12:30 +02:00
Max Kellermann
3558317dc9 event/MultiSocketMonitor: remove force-refresh on every iteration
libasound guarantees that the file descriptors never change for a
"prepared" PCM device, thus we can omit this defensive kludge.
2024-07-23 15:08:55 +02:00
Max Kellermann
18cb34825d input/alsa: use libfmt instead of std::string concatenation 2024-07-23 15:04:49 +02:00
Max Kellermann
4c4a3c8664 event/TimerList: use FineTimerEvent::GetDue()
Avoid accessing the private field from an inner class of the friend
class, because some compilers apparently don't like it (Apple clang).
2024-07-23 13:38:05 +02:00
Max Kellermann
d24e7763f6 net/AddressInfo: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:19 +02:00
Max Kellermann
49ad4e9f3c io/FileDescriptor: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:05:02 +02:00
Max Kellermann
ea96b321dc net/SocketAdddress: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:48 +02:00
Max Kellermann
bc758cece0 util/StringPointer: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:37 +02:00
Max Kellermann
0e4885c1fa util/IterableSplitString: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:30 +02:00
Max Kellermann
9944c97203 util/AllocatedString: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:20 +02:00
Max Kellermann
58a5550439 util/AllocatedArray: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-23 13:04:10 +02:00
Max Kellermann
8e42467bd2 decoder/mpg123: relax mpg123_length() check in Scan()
Do not fail the Scan() function completely if libmpg123 cannot
determine the duration.
2024-07-12 16:11:08 +02:00
Max Kellermann
e00e7802c8 decoder/mpg123: report unknown duration if mpg123_length()<0
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2058
2024-07-12 16:09:35 +02:00
Max Kellermann
55d0bbade2 decoder/mpg123: move code to GetDuration() 2024-07-12 16:08:11 +02:00
Max Kellermann
de9f0dc910 playlist/Plugin: convert _init() and _finish() to methods 2024-07-12 16:00:42 +02:00
Max Kellermann
cf5970a6e1 output/Registry: replace output_plugins_for_each() with a container class 2024-07-12 15:55:01 +02:00
Max Kellermann
29747a213f playlist/Registry: replace playlist_plugins_for_each() with a container class 2024-07-12 15:52:05 +02:00
Max Kellermann
c64b4838dc encoder/List: replace encoder_plugins_for_each() with a container class 2024-07-12 14:59:18 +02:00
Max Kellermann
040c4a8560 archive/ArchiveList: replace archive_plugins_for_each() with a container class 2024-07-12 09:58:19 +02:00
Max Kellermann
90dfa437e0 lib/alsa/NonBlock: use a persistent pollfd array
This implements the semantic API change introduced by commit
cd04da2bcf
2024-07-11 21:47:15 +02:00
Max Kellermann
4486b2eded lib/alsa/NonBlock: add common base class 2024-07-11 21:38:45 +02:00
Max Kellermann
3db8a4f41b lib/alsa/NonBlock: embed in "namespace Alsa" 2024-07-11 21:33:03 +02:00
Max Kellermann
9704cf3dcb lib/alsa/NonBlock: fix lambda indent 2024-07-11 21:12:18 +02:00
Max Kellermann
9aa6b03ba8 event/MultiSocketMonitor: pass std::span to ReplaceSocketList() 2024-07-11 21:09:27 +02:00
Max Kellermann
45f92f0ef0 event/MultiSocketMonitor: fix lambda indent 2024-07-11 21:06:33 +02:00
Max Kellermann
23a3278b4e event/MultiSocketMonitor: make ctor protected and explicit 2024-07-11 21:05:11 +02:00
Max Kellermann
951f916440 mixer/alsa: add noexcept 2024-07-11 21:03:41 +02:00
Max Kellermann
fb87e19bae input/Registry: replace the input_plugins_for_each macros with a container class 2024-07-11 20:52:44 +02:00
Max Kellermann
49edb16de0 decoder/Thread: add enum DecodeResult, log better diagnostics
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2076
2024-07-11 16:47:43 +02:00
Max Kellermann
8671896e4c decoder/Thread: throw StopDecoder if command==STOP in decoder_run_stream()
Everybody else is doing that, so let's do the same and not pretend
playback was successful.
2024-07-11 16:28:57 +02:00
Max Kellermann
c2470ebd9c decoder/List: eliminate decoder_plugins_try()
Migrate callers to GetEnabledDecoderPlugins().  By not using lambdas,
we can switch to enums as return value for better diagnostics.
2024-07-11 16:15:38 +02:00
Max Kellermann
a27fb71c4c decoder/List: add iterable container for decoder plugins 2024-07-11 15:30:31 +02:00
Max Kellermann
f6a687dc2b util/FilteredContainer: new class 2024-07-11 15:30:30 +02:00
Max Kellermann
9210705598 util/TerminatedArray: new class 2024-07-11 15:30:30 +02:00
Max Kellermann
3d995bba5f util/DereferenceIterator: add class DereferenceContainerAdapter 2024-07-11 14:55:35 +02:00
Max Kellermann
c77f5095d6 util/DereferenceIterator: allow comparing with sentinel end iterators 2024-07-11 14:55:35 +02:00
Max Kellermann
3701378449 util/DereferenceIterator: fix operator- and operator+ return types 2024-07-11 14:29:10 +02:00
Max Kellermann
cb9f3c1a5b util/DereferenceIterator: optimize and simplify increment/decrement operators 2024-07-11 14:27:23 +02:00
Max Kellermann
fe66cde616 util/DereferenceIterator: add constexpr 2024-07-10 20:13:24 +02:00
Max Kellermann
0cc9ef0aee util/DereferenceIterator: remove unnecessary operator!=()
The compiler must generate this implicitly from operator==().
2024-07-10 20:13:19 +02:00
Max Kellermann
68a424d9e1 util/DereferenceIterator: add missing const 2024-07-10 20:11:55 +02:00
Max Kellermann
13576b8a2e lib/curl/Easy: use pass std::chrono::duration to SetTimeout() 2024-07-10 16:58:16 +02:00
Max Kellermann
7c21d57953 config/Block: add method GetDuration() 2024-07-10 16:58:16 +02:00
Max Kellermann
1e9e182a32 config/Data: merge the two duration parser methods, pass minimum value 2024-07-10 16:49:18 +02:00
Max Kellermann
3733bc57b7 config/{Block,Data,Param}: add concept checks to With() 2024-07-10 16:38:08 +02:00
Max Kellermann
a196d1ddf2 decoder/Thread, ...: quote log strings 2024-07-10 15:40:04 +02:00
Max Kellermann
8861279add Merge branch 'explicit_case_sensitivity' of https://github.com/geneticdrift/MPD 2024-07-10 15:33:47 +02:00
gd
d2382e8de9 ParseStringFilter: when failed to parse the operator, indicate the unknown operator in the error message 2024-07-09 17:25:45 +03:00
gd
c39d8e5813 Added explicitly case sensitive/insensitive filter operators.
The default case sensitivity is hard coded for each command.
These operators allow to override the this default case sensitivity.
2024-07-09 17:25:45 +03:00
Max Kellermann
bd59c889f3 util/StringVerify: new library 2024-07-08 16:02:40 +02:00
Max Kellermann
553c2e9e2b output/Command: trigger IDLE_OUTPUT only for the current partition
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1622
2024-07-08 15:54:14 +02:00
Max Kellermann
3229da48e3 tag/Mask: pass 64 bit integer to constructor, prevent truncation
Commit f49d4ef4ad changed the bit mask size to 64 bit, but I forgot
to change the constructor as well.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2057
2024-07-08 15:34:27 +02:00
Max Kellermann
e380ae90eb Log: add missing include for std::back_inserter()
Closes https://github.com/MusicPlayerDaemon/MPD/issues/2071
2024-07-07 10:10:27 +02:00
Max Kellermann
8790f2469c lib/fmt/SocketAddressFormatter: switch to the new net/FormatAddress library 2024-07-05 18:39:10 +02:00
Max Kellermann
d3ef4ab234 net/FormatAddress: new library to replace ToString.cxx
This library writes to a caller-specified buffer instead of
allocating a std::string which can be faster by avoiding heap
allocations.
2024-07-05 18:38:17 +02:00
Max Kellermann
28c030c0f0 lib/fmt/SocketAddressFormatter: add const for fmt 11 support
See d70729215f
2024-07-05 18:21:38 +02:00
Max Kellermann
175103e8d4 lib/fmt/ExceptionFormatter: un-inline to reduce header dependencies 2024-07-05 18:20:31 +02:00
Max Kellermann
3f638eeed6 lib/fmt/SocketAddressFormatter: un-inline to reduce header dependencies 2024-07-05 18:20:31 +02:00
Max Kellermann
df2be0a75f Log: add missing include for GetFullMessage() 2024-07-05 18:20:31 +02:00
Max Kellermann
044280c538 meson.build: require Meson 1.0
Debian Bookworm (the current stable) has 1.0.1 and Ubuntu LTS 24.04
has 1.3.2.  It's acceptable to require at least version 1.0 now.
2024-07-05 17:23:52 +02:00
Max Kellermann
3648475f87 Merge branch 'libfmt' of https://github.com/heitbaum/MPD 2024-07-05 16:47:04 +02:00
Rudi Heitbaum
1402869715 lib/fmt: support build with libfmt-11.0.0
Upstream libfmt commit fmtlib/fmt@d707292
now requires the format function to be const.

Adjust the function prototype so it is const and can compile.

Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
2024-07-05 14:33:07 +00:00
Max Kellermann
ffa917e9b5 Merge branch 'stickernames_cmd' of https://github.com/jcorporation/MPD 2024-07-05 16:26:58 +02:00
Max Kellermann
ac1265b9cc output/alsa: set up the ALSA channel map
This is necessary for proper multi-channel support because many ALSA
drivers do not use the channel maps from surround*.conf.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2063
2024-06-27 21:52:38 +02:00
Max Kellermann
2ce8310448 time/Convert: forward-declare struct tm 2024-06-25 20:33:13 +02:00
Max Kellermann
a739eefb01 lib/zlib/Error: derive from std::system_error 2024-06-25 20:32:33 +02:00
Max Kellermann
432bfa15f4 net/SocketError: move check to IsSocketError() 2024-06-25 20:29:27 +02:00
Max Kellermann
7b938b4d14 util/Exception: sanitize message strings
This should prevent leaking unsanitized strings from libraries.
2024-06-25 20:29:07 +02:00
Max Kellermann
abb23ba894 event/EpollEvents: add mapping for EPOLLPRI 2024-06-25 20:28:34 +02:00
Max Kellermann
381215fd73 *: use std::scoped_lock with implicit template parameter 2024-05-23 20:54:49 +02:00
Max Kellermann
4fc3230fe6 event/Loop: use std::scoped_lock with implicit template parameter 2024-05-23 20:44:12 +02:00
Max Kellermann
64bdaa46fb lib/curl/Init: use std::scoped_lock with implicit template parameter 2024-05-23 20:44:12 +02:00
Max Kellermann
6e16eaebba lib/fmt/SystemError: include <array> only on Windows 2024-05-23 20:31:56 +02:00
Max Kellermann
a67f7f88e4 util/MimeType: add missing include 2024-05-23 20:31:10 +02:00
Max Kellermann
ec8f467585 util/Intrusive*: add IWYU pragmas 2024-05-23 20:30:50 +02:00
Max Kellermann
9e3a66d5bf util/djb_hash: make inline and constexpr
Allows calculating hashes at compile time.
2024-05-23 20:30:17 +02:00
Max Kellermann
c7409d1e04 util/AllocatedString: add missing include 2024-05-23 20:22:44 +02:00
Max Kellermann
b64d01677b storage/nfs: optimize OpenFile() 2024-05-17 13:39:42 +02:00
Max Kellermann
9e8128ecb5 lib/nfs/FileReader: convert path to std::string 2024-05-17 12:54:08 +02:00
Max Kellermann
131dcce0a1 playlist/Mapper: use Storage::OpenFile() 2024-05-17 12:54:08 +02:00
Max Kellermann
6dfdd8c1c2 db/update/Walk: use Storage::OpenFile() 2024-05-17 12:54:08 +02:00
Max Kellermann
1b6c279850 db/update/Paylist: use Storage::OpenFile() 2024-05-17 12:54:08 +02:00
Max Kellermann
81c778a529 SongUpdate: use Storage::OpenFile() 2024-05-17 12:54:08 +02:00
Max Kellermann
f578a1cb2b storage/Interface: add virtual method OpenFile()
This should replace most InputStream::Open() calls because it is a
chance to reuse existing resources (e.g. the NFS connection).  No such
optimization is implemented, currently (and the method is not yet used
by anybody).
2024-05-17 12:54:08 +02:00
Max Kellermann
2576e66a55 input/nfs: cancel the pending read operation on seek 2024-05-17 12:54:08 +02:00
Max Kellermann
58e3b830e9 lib/nfs/FileReader: clear the read_buffer in CancelRead()
Fixes assertion failure with libnfs 6.
2024-05-17 12:53:35 +02:00
Max Kellermann
1d35031024 lib/nfs/Connection: merge CancelAndClose() into Cancel() 2024-05-17 12:53:30 +02:00
Max Kellermann
96b61755da lib/nfs/FileReader: fix doc typo 2024-05-15 21:31:30 +02:00
Max Kellermann
9f174c56ce playlist/Mapper: postpone the stored playlist error
Fixes another regression by commit
f53cd44c7a - an exception thrown by
playlist_open_in_playlist_dir() would skip over
playlist_open_in_storage().
2024-05-15 21:08:46 +02:00
Max Kellermann
c8be9662bb playlist/Print: add missing exception handler
This went missing in commit f53cd44c7a
2024-05-15 20:53:55 +02:00
Max Kellermann
f53cd44c7a playlist/{Stream,Mapper,Any}: propagate exceptions, do not catch&log them
Let the caller handle all the exceptions.
2024-05-15 20:19:57 +02:00
Max Kellermann
9303764a83 playlist/Print: throw PlaylistError::NoSuchList instead of returning false 2024-05-15 20:19:09 +02:00
Max Kellermann
a5456a89dc playlist/Length: throw PlaylistError::NoSuchList instead of returning false 2024-05-15 20:15:16 +02:00
Max Kellermann
c974fc664c playlist/Plugin: add noexcept 2024-05-15 20:02:12 +02:00
Max Kellermann
eceead671e playlist/Stream: add API documentation 2024-05-15 19:59:57 +02:00
Max Kellermann
4e7b554605 TagAny, playlist/Mapper: use if with initializer 2024-05-15 15:02:59 +02:00
Max Kellermann
a701da6386 db/update/InotifyUpdate: use OpenLocalInputStream() 2024-05-15 14:48:32 +02:00
Max Kellermann
1f47fe47c7 input/Open: move code to WaitReady() 2024-05-15 14:39:40 +02:00
Max Kellermann
31e583e9f8 lib/nfs: initial support for libnfs API 2
Commit
5e8f7ce273
introduced the libnfs API version 2 which may eventually become libnfs
version 6.

This version detection depends on my pull request
https://github.com/sahlberg/libnfs/pull/468
2024-05-15 06:01:42 +02:00
Max Kellermann
0ac24e5a24 lib/nfs/FileReader: move code to ReadCallback() 2024-05-15 06:00:37 +02:00
Max Kellermann
98f53b6d3d lib/nfs/Connection: add DisposablePointer parameter to CancelAndClose()
Just in case somebody needs to free a buffer after the NFS
cancellation has completed.
2024-05-15 06:00:35 +02:00
Max Kellermann
f5092cb73d util/DisposablePointer: new class 2024-05-15 05:58:23 +02:00
Max Kellermann
48d3bd1cca lib/nfs/Connection: add API documentation 2024-05-14 19:57:50 +02:00
Max Kellermann
5cffd4f673 lib/nfs/Connection: remove EnableCloseOnExec() call
SOCK_CLOEXEC has been added to libnfs version 2, and since we require
at least version 4, we can safely remove this call.
2024-05-14 19:51:52 +02:00
Max Kellermann
416f65fe01 util/RoundPowerOfTwo: new library 2024-05-13 20:25:57 +02:00
Max Kellermann
64c291ba78 lib/nfs/Connection: suppress bogus clang warning
We do need to capture "this" because we use "this->active_leases", but
clang 18 is too dumb to understand this.
2024-05-13 18:30:05 +02:00
Max Kellermann
dcde2a0bae lib/nfs/Connection: fix -Wunused-lambda-capture 2024-05-13 18:27:38 +02:00
Max Kellermann
f0ac0c19b7 lib/nfs/Connection: remove obsolete debug field "in_destroy"
This is obsolete because PrepareDestroyContext() no longer calls
nfs_destroy_context().
2024-05-13 16:53:18 +02:00
Max Kellermann
ba1b8533a5 lib/nfs/Connection: fix assertion failure on mount timeout
When nfs_destroy_context() is called while nfs_mount_async() is in
progress, libnfs invokes MountCallback(-EINTR) (but only if a NFS RPC
call is in progress; if the TCP connect is in progress, that callback
is not invoked).

If the mount operation had timed out, OnMountTimeout() set
mount_state=FINISHED, which triggered an assertion failure in
MountCallback(); this commit adds a check on whether the mount has
timed out and ignores the MountCallback.
2024-05-13 16:51:44 +02:00
Max Kellermann
84e8927b1b lib/nfs/FileReader: remove obsolete stat64 cast
Obsoleted (and broken) by commit 9947d3e67f
2024-05-13 12:33:03 +02:00
Max Kellermann
556300d59a input/InputStream: add [[nodiscard]] 2024-05-13 12:29:16 +02:00
Max Kellermann
34f7b38f39 input/InputStream: pass std::span<std::byte> to Read() 2024-05-13 12:28:40 +02:00
Max Kellermann
f28d10d934 decoder/dsdiff: convert pointers to references 2024-05-13 11:34:05 +02:00
Max Kellermann
6d5dab38dd input/async: pass std::string_view to constructor 2024-05-13 10:18:18 +02:00
jcorporation
f8271fec12 command_available return stickernames only if stickerdb is enabled 2024-05-12 21:23:29 +02:00
Max Kellermann
4800f1d8f2 storage/Interface: add [[nodiscard]] 2024-05-10 19:08:57 +02:00
Max Kellermann
227ab998bc lib/nfs/Connection: pass status and data to the NfsClientError ctor
This way, we avoid calling the FormatNfsClientError() which crashes
when nfs_get_error() returns nullptr; that can happen on RPC errors:
then, libnfs's check_nfs4_error() doesn't call nfs_set_error().

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2040
2024-05-10 16:36:29 +02:00
Max Kellermann
9384bff6f9 lib/nfs/Manager: add method MakeConnection()
This uses the libnfs function nfs_parse_url_dir() which means MPD
gains support for the libnfs arguments like "version".

Closes https://github.com/MusicPlayerDaemon/MPD/issues/2039
2024-05-07 21:22:43 +02:00
Max Kellermann
9947d3e67f lib/nfs/Connection: use nfs_fstat64_async()
This is 64-bit-safe and anyway, nfs_fstat_async() doesn't work with
NFSv4.
2024-05-07 21:22:40 +02:00
Max Kellermann
67f01fbdb6 db/plugins/simple/Song: pass StorageFileInfo to UpdateFile()
Eliminates a redundant GetInfo() call.
2024-05-07 21:22:39 +02:00
Max Kellermann
164b5b0cf3 db/Song, SongUpdate: remove unnecessary c_str() calls
Just case implicitly to std::string_view, which is both simpler and
safer.
2024-05-07 21:13:38 +02:00
Max Kellermann
56bb1dddd7 lib/nfs/Connection: simplify error handling in OnSocketReady() 2024-05-06 18:35:58 +02:00
Max Kellermann
e6b1cf540b lib/nfs/Connection: remove unnecessary initializers from MountInternal() 2024-05-06 18:24:36 +02:00
Max Kellermann
d61c83ace8 lib/nfs/Connection: create the nfs_context in the constructor
Another lifetime simplification.
2024-05-06 18:22:23 +02:00
Max Kellermann
4139024b3d lib/nfs/Connection: return from OnSocketReady() after error 2024-05-06 18:20:42 +02:00
Max Kellermann
48fe8666c9 lib/nfs/Connection: call nfs_destroy_context() only in the destructor
This simplifies the lifetime of the nfs_context object.
2024-05-06 18:16:11 +02:00
Max Kellermann
90a44a0c07 lib/nfs/Connection: replace flag "mount_finished" with enum 2024-05-06 18:16:11 +02:00
Max Kellermann
e013c19223 storage/nfs: remove unused method EnsureConnected() 2024-05-06 18:16:11 +02:00
Max Kellermann
4684d05fa6 player/Thread: reset the decoder_starting flag in StopDecoder()
Fixes crash bug (assertion failure) if a new "play" command is handled
while the player thread waits for decoder startup.
2024-05-06 17:38:58 +02:00
Max Kellermann
1c3a1c842d lib/nfs/Lease: use InstrusiveList instead of std::list 2024-05-06 17:22:36 +02:00
Max Kellermann
f5127686fe lib/nfs/Connection: pass std::exception_ptr by value 2024-05-06 17:03:21 +02:00
Max Kellermann
2b0275a1c8 lib/nfs/Connection: pass server and export_name as std::string_view 2024-05-06 17:01:15 +02:00
Max Kellermann
028693c380 lib/nfs/Manager: forward-declare class ManagedConnection 2024-05-06 16:58:41 +02:00
Max Kellermann
63920be17e lib/nfs/Connection: make server and export_name const 2024-05-06 16:55:57 +02:00
Max Kellermann
96888cce9c storage/nfs: pass std::string_view to the NfsStorage ctor 2024-05-06 15:28:01 +02:00
Max Kellermann
bcc39be784 lib/nfs/Base: use std::string_view 2024-05-06 15:25:55 +02:00
Max Kellermann
b6314b4c4b lib/nfs/Base: use std::array 2024-05-06 15:22:49 +02:00
Max Kellermann
23d895415a lib/nfs/meson.build: require libnfs 4.0
All Linux distributions have at least version 4, and thus I cannot
test with older versions.
2024-05-06 14:54:04 +02:00
Max Kellermann
518ce0187a remove macOS support
There were a few macOS related bug reports on the bug tracker which
have been open for years without a volunteer caring for them.  The
GitHub actions build has also been broken for a long time due to bugs
in the ancient LLVM toolchain shipped with macOS, making macOS an
unsuitable non-Linux target for testing MPD's portability.

All of this makes macOS support an annoying liability for me.  To
avoid more frustration, I'm hereby dropping macOS support completely
from MPD.  Maybe this causes enough pain for a new maintainer to
spawn, but maybe nobody cares, so... let's see.
2024-05-06 14:11:50 +02:00
Max Kellermann
615f6f50ce lib/yajl: drop "yajl/" prefix from #include paths
According to the yajl API documentation, #include lines should have
the "yajl/" path prefix, but the actual pkg-config file contains:

 includedir=${dollar}{prefix}/include/yajl

.. which already contains this directory name, and thus the "yajl/"
prefix cannot work.  Unfortunately, the yajl project hasn't been
maintained for nearly 10 years, and there's little chance this bug
will ever be fixed.
2024-05-06 13:31:34 +02:00
Max Kellermann
03b674ce73 net/meson.build: compile IPv[46]Address.cxx only if TCP is enabled 2024-05-06 12:57:55 +02:00
Max Kellermann
9c421997bf net/SocketDescriptor: WriteNoWait() uses MSG_NOSIGNAL 2024-05-06 12:55:02 +02:00
Max Kellermann
73509fc189 net/LocalSocketAddress: new class wrapping struct sockaddr_un 2024-05-06 12:54:45 +02:00
Max Kellermann
7c9b7fa311 net/SocketAddress: use std::string_view::find() instead of std::memchr() 2024-05-06 12:54:45 +02:00
Max Kellermann
cbba22c947 net/SocketAddress: include IPv[46]Address.hxx only ifdef HAVE_TCP 2024-05-06 12:50:44 +02:00