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