Commit Graph

1064 Commits

Author SHA1 Message Date
Michael Cho
1a063fee7e meson.build: support building with ICU 76
ICU 76 decided to reduce overlinking[^1] thus `icu-i18n` will no longer
add `icu-uc` when linking to shared libraries. This results in failure:
```
src/lib/icu/libicu.a.p/Converter.cxx.o: undefined reference to symbol 'ucnv_fromUnicode_76'
```

[^1]: 199bc82702
2024-10-27 09:57:22 -04:00
Max Kellermann
752c6c1f03 lib/fmt/ExceptionFormatter: move the exception_ptr 2024-09-27 08:48:30 +02:00
Max Kellermann
ed755f04e9 lib/fmt/meson.build: suppress -Warray-bounds with GCC 14
The bug is still present in GCC 14.
2024-08-30 12:48:41 +02:00
Max Kellermann
d207c144d6 lib/curl/Multi: remove the Wait() overload with "int" timeout
Enforce type-safety.
2024-08-30 12:30:18 +02:00
Max Kellermann
435f1eb6cc lib/curl/Multi: remove default timeout value
-1 is an illegal value and leads to CURLM_BAD_FUNCTION_ARGUMENT.  Our
API shouldn't imply this value.
2024-08-30 12:30:15 +02:00
Max Kellermann
f7790430a0 lib/curl/Multi: add SetSocketFunction(), SetTimerFunction() 2024-07-31 10:06:29 +02:00
Max Kellermann
fb151c8662 lib/fmt/meson.build: suppress -Warray-bounds with GCC 13 2024-07-29 22:13:11 +02:00
Max Kellermann
323517753d lib/fmt/meson.build: remove obsolete clang 14 workaround
Android NDK r27 has clang 18 and I don't feel like supporting clang 14.
2024-07-29 22:11:20 +02:00
Max Kellermann
9c8f4aaf99 lib/alsa/meson.build: require libasound 1.2 or later
This allows us to drop the 1.1.4 snd_pcm_drain() bug workaround (added
by commit f85d4d28d1).
2024-07-29 15:42:46 +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
13576b8a2e lib/curl/Easy: use pass std::chrono::duration to SetTimeout() 2024-07-10 16:58:16 +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
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
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
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
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
a739eefb01 lib/zlib/Error: derive from std::system_error 2024-06-25 20:32:33 +02:00
Max Kellermann
381215fd73 *: use std::scoped_lock with implicit template parameter 2024-05-23 20:54:49 +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
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
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
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
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
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
34f7b38f39 input/InputStream: pass std::span<std::byte> to Read() 2024-05-13 12:28:40 +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
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