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
d6adc59265
test/run_storage: use FormatISO8601()
2024-05-13 10:37:33 +02:00
Max Kellermann
c154dc00d7
test/run_storage: use StringIsEqual()
2024-05-13 10:37:25 +02:00
Max Kellermann
6d5dab38dd
input/async: pass std::string_view to constructor
2024-05-13 10:18:18 +02:00
jcorporation
480f4d4cf1
Fix filename list for albumart
2024-05-12 22:17:13 +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
48ce8e9fb7
subprojects: update sqlite3 to 3450300
2024-05-10 18:18:04 +02:00
Max Kellermann
f746e5b7d7
subprojects: update liburing to 2.5
2024-05-10 18:17:52 +02:00
Max Kellermann
cdce257512
subprojects: update libnpupnp to 6.1.2
2024-05-10 18:17:42 +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
1c69498c58
.github/workflows/build.yml: do not install yajl on macOS
...
The Brew package of yajl is broken, it fails to build:
In file included from ../src/lib/yajl/Handle.cxx:4:
In file included from ../src/lib/yajl/Handle.hxx:6:
/opt/homebrew/Cellar/yajl/2.1.0/include/yajl/yajl_parse.h:22:10: fatal error: 'yajl/yajl_common.h' file not found
#include <yajl/yajl_common.h>
^~~~~~~~~~~~~~~~~~~~
1 error generated.
Therefore, MPD cannot support building with yajl on macOS.
2024-05-06 13:39:02 +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
79df6a646b
Merge branch 'mpdlib' of https://github.com/DDRBoxman/MPD
2024-05-06 13:03:50 +02:00
Max Kellermann
89d68fb2af
Merge branch 'debian-build-doc' of https://github.com/mxjeff/MPD
2024-05-06 13:03:05 +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
3813433e02
test/net/TestLocalSocketAddress: add unit tests for GetLocalRaw()
2024-05-06 12:54:45 +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
Max Kellermann
f8529d4fe6
net/{Allocated,Static}SocketAddress: inline GetLocalRaw()
2024-05-06 12:50:29 +02:00
Max Kellermann
2a206ef309
net/StaticSocketAddress: add method GetLocalPath()
2024-05-06 12:50:24 +02:00
Max Kellermann
6200c0dc46
net/StaticSocketAddress: include <string_view> only ifdef HAVE_UN
2024-05-06 12:50:19 +02:00
Max Kellermann
1760310123
Revert "util/IntrusiveList: allow the last disposer to destroy the IntrusiveList"
...
This reverts commit 669cbcd25a
("util/IntrusiveList: allow the last disposer to destroy the
IntrusiveList"). It was bad because it could lead to off-by-one crash
bugs when the last item was removed inside the previous item's
disposer.
We need a different solution for the other crash bug that was fixed by
the reverted commit.
2024-05-06 12:49:30 +02:00
Max Kellermann
c8ed28e9c6
test/util/TestIntrusiveList: add test for clear_and_dispose() with modifying disposer
2024-05-06 12:49:04 +02:00
Max Kellermann
56d4784b11
util/IntrusiveList: add API documentation
2024-05-06 12:48:53 +02:00