Max Kellermann
eb675ad1b1
pcm/meson.build: add missing dependency on libconfig.a
2023-11-25 22:51:43 +01:00
Max Kellermann
08a5768764
fs/io/TextFile: split into class FileLineReader and AutoGunzipFileLineReader
...
Detangle dependencies.
2023-11-25 22:50:32 +01:00
Max Kellermann
d888bb1902
io/meson.build: move libfmt dependency to libio.a
2023-11-25 22:16:47 +01:00
Max Kellermann
6dc708f53f
net/SocketDescriptor: use method GetOption() internally
2023-11-25 21:58:17 +01:00
Max Kellermann
60033f3eb4
net/SocketDescriptor: add method GetProtocol()
2023-11-25 21:58:09 +01:00
Max Kellermann
1239e075b8
net/SocketDescriptor: add method GetIntOption()
2023-11-25 21:56:07 +01:00
Max Kellermann
d0eea87b1a
song/*SongFilter: use libfmt
2023-11-25 20:42:50 +01:00
Max Kellermann
273fc329e0
Merge branch 'added-since' of https://github.com/jcorporation/MPD
2023-11-25 20:36:38 +01:00
Max Kellermann
b9daeef524
event/FineTimerEvent: add SetDue(), ScheduleCurrent()
2023-11-21 20:47:29 +01:00
Max Kellermann
9383ceac30
event/{Coarse,Fine}TimerEvent: add API docs
2023-11-21 20:47:25 +01:00
Max Kellermann
ebf1fc7ca4
util/IntrusiveList: convert static_assert to concept check
2023-11-21 20:42:01 +01:00
Max Kellermann
73708e7be7
event/TimerEvent: remove transitional header
2023-11-21 20:41:55 +01:00
Max Kellermann
0c409aa290
input/LastInputStream: use CoarseTimerEvent
2023-11-21 20:41:47 +01:00
Max Kellermann
edfa329e64
util/DereferenceIterator: use *declval() to guess the default value type
...
This allows the iterator to point to another iterator.
2023-11-21 20:40:47 +01:00
Max Kellermann
5ab2c31500
Merge branch 'v0.23.x'
2023-11-21 20:37:46 +01:00
skidoo23
50c1e3738a
decoder/ffmpeg: Fix build error with ffmpeg 6.1
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1898
2023-11-21 20:36:37 +01:00
jcorporation
1615fbc30e
Add "added-since" filter expression
2023-11-04 17:25:24 +01:00
jcorporation
45a4fcab1e
Add support for added attribute to proxy plugin
2023-11-02 21:22:48 +01:00
Max Kellermann
68b19ae087
util/SpanCast: add ReferenceAsWritableBytes()
2023-11-02 10:50:24 +01:00
Max Kellermann
a073db1e52
util/SpanCast: add ReferenceAsBytes()
2023-11-02 10:50:00 +01:00
Max Kellermann
10940da381
util/Intrusive{List,HashSet}: add "tag" for base hooks
2023-11-02 10:48:46 +01:00
Max Kellermann
57d9cffc42
event/PipeEvent: expose the EventPollBackendEvents constants
2023-11-02 10:48:21 +01:00
Max Kellermann
ac25f3456a
Merge branch 'added_time' of https://github.com/jcorporation/MPD
2023-11-02 10:42:31 +01:00
jcorporation
f4f79a3d5f
New command "stickernames" lists uniq and sorted sticker names
2023-10-21 18:21:03 +02:00
jcorporation
7bf43a9712
Add "added" timestamp to song database
...
- added is set to current time, if a new song is added to the database.
- GetAdded falls back to mtime.
Code for proxy plugin is missing, this needs a patch for libmpdclient.
closes #378
2023-10-20 17:29:31 +02:00
Max Kellermann
2b10cf3c15
pcm/Normalizer: change license identifier to LGPL-2.1-only
...
"LGPL-2.1" doesn't exist, and the old copyright header did not specify
the "or later" clause, so I must assume it's 2.1 only.
2023-10-15 11:37:21 +02:00
gd
432675d4c2
Stickers: added support for stickers on playlists and some tag types
2023-10-15 11:25:16 +02:00
Max Kellermann
70ac638d93
tag/Mask: make everything constexpr
2023-10-15 11:03:56 +02:00
Max Kellermann
ccbacb369b
io/linux/ProcPath: new library
2023-10-15 10:55:32 +02:00
Max Kellermann
7c0b561a16
event/InotifyEvent: add method TryAddWatch()
2023-10-15 10:51:06 +02:00
Max Kellermann
db5f270f42
util/AllocatedString: fix string_view specialization in TotalSize()
2023-10-09 14:54:40 +02:00
Max Kellermann
f49d4ef4ad
tag/Mask: switch to 64 bit because have we 34 tags now and 32 bits are not enough
2023-10-08 10:02:50 +02:00
Max Kellermann
2859845567
Merge branch 'v0.23.x'
2023-10-08 10:02:19 +02:00
Max Kellermann
f3c37e484e
tag/Mask: add static_assert on the size of the mask
2023-10-08 10:01:00 +02:00
Max Kellermann
e521b58b01
io/PeekReader: fix offset/size mixup
...
Regression by commit 7ccc4ddf0d
2023-10-08 09:55:59 +02:00
Max Kellermann
34182990ef
fs/FileInfo: add fstat() wrapper
2023-10-07 12:49:07 +02:00
Max Kellermann
1ca5d6baa6
io/FileReader: do not copy the path
2023-10-07 12:48:03 +02:00
Max Kellermann
9365f68454
io/FileReader: use GetFileInfoByHandle()
2023-10-07 12:47:57 +02:00
Max Kellermann
7b5f107341
fs/FileInfo: add GetFileInformationByHandleEx() wrapper
2023-10-07 12:37:49 +02:00
Max Kellermann
e9ec03f769
PlaylistFile: use uint_least64_t
2023-10-07 12:29:14 +02:00
Max Kellermann
579a6ee299
fs/FileInfo: un-inline the constructor to reduce header dependencies
2023-10-07 12:28:31 +02:00
Max Kellermann
7d31659137
PlaylistFile: add missing include
2023-10-07 12:28:31 +02:00
Max Kellermann
f549c611ab
fs/FileInfo: make constructor explicit
2023-10-07 12:24:05 +02:00
Max Kellermann
51c0a03e94
fs/FileInfo: add constexpr
and noexcept
2023-10-07 12:22:54 +02:00
Max Kellermann
19c73680cf
io/FileReader: use uint_least64_t
2023-10-07 08:49:04 +02:00
Max Kellermann
a9ba9a5f92
io/Reader: add [[nodiscard]]
2023-10-07 08:45:59 +02:00
Max Kellermann
3032792563
io/Reader: add method ReadFull()
2023-10-07 08:45:52 +02:00
Max Kellermann
7ccc4ddf0d
io/Reader: use std::span
2023-10-07 08:44:42 +02:00
Max Kellermann
b9704715fb
io/FileOutputStream: pass dfd=-1 for absolute /proc/self/fd/N path
2023-10-07 08:42:35 +02:00
Max Kellermann
86e7dff2fc
util/TextFile: add missing cast
2023-10-07 08:39:24 +02:00
Max Kellermann
c450f644e6
lib/xiph/OggSyncState: fix indent
2023-10-07 08:30:12 +02:00
Max Kellermann
496184b1bc
io/Reader: add method ReadT()
2023-10-07 08:27:13 +02:00
Max Kellermann
b81cac3305
lib/nfs/Error: include cleanup
2023-10-04 23:12:45 +02:00
Max Kellermann
bf9dd24536
lib/pcre/UniqueRegex: wrap Compile() options in struct
2023-10-04 17:32:12 +02:00
Max Kellermann
e5680c712b
util/IntrusiveList: add reverse_iterator
2023-10-04 16:51:17 +02:00
Max Kellermann
44daa6d3e6
util/IntrusiveForwardList: reset last_cache properly in clear()
2023-10-04 16:50:46 +02:00
Max Kellermann
5aaa3f50aa
util/BindMethod: move SignatureHelper to return type
2023-10-04 16:50:25 +02:00
Max Kellermann
7d26cd74c1
util/BindMethod: add noexcept
2023-10-04 16:50:25 +02:00
Max Kellermann
7e6941acc8
util/BindMethod: add constexpr
2023-10-04 16:50:25 +02:00
Max Kellermann
63d865666e
util/StringBuffer: use using
instead of typedef
2023-10-04 16:50:25 +02:00
Max Kellermann
5dda4084df
util/BindMethod: use using
instead of typedef
2023-10-04 16:50:25 +02:00
Max Kellermann
19f9238ef0
util/BindMethod: fix indent
2023-10-04 16:50:25 +02:00
Max Kellermann
491cc8f54d
net/SocketDescriptor: add {Read,Write}NoWait()
...
It was surprising that Read() was non-blocking, but there was no
blocking version of it. Let's make the non-blocking behavior explicit
and change Read() to be blocking.
In order to find existing callers easily with compiler errors, this
also refactors Read()/Write() to take a std::span parameter.
2023-09-27 11:39:55 +02:00
Max Kellermann
cad35a83fb
io/FileDescriptor: add Read()/Write() overloads with std::span
2023-09-27 11:14:23 +02:00
Max Kellermann
5fbe5951ab
output/snapcast/Client: use SocketDescriptor::Send()
2023-09-27 10:39:48 +02:00
Max Kellermann
21590e60e6
event/FullyBufferedSocket: pass std::span to DirectWrite()
2023-09-27 10:36:56 +02:00
Max Kellermann
fe69ad0861
event/BufferedSocket: pass std::span to DirectRead()
2023-09-27 10:34:50 +02:00
Max Kellermann
9daf8f6de5
event/BufferedSocket: use std::byte
2023-09-27 10:30:09 +02:00
Max Kellermann
8ca6606323
net/SocketDescriptor: move code to Receive(), Send()
2023-09-27 10:16:21 +02:00
Max Kellermann
09a2da89a2
io/FileDescriptor: pass std::span to Full{Read,Write}()
2023-09-27 10:14:02 +02:00
Max Kellermann
9a0b3775d8
encoder/ToOutputStream: add API docs
2023-09-26 15:48:55 +02:00
Max Kellermann
2075a9a999
encoder/ToOutputStream: remove unnecessary cast
2023-09-26 15:48:22 +02:00
Max Kellermann
1090cc964a
event/Loop: relicense to BSD-2
...
This library has been initially developed at CM4all and eventually
published here:
https://github.com/CM4all/libcommon/tree/master/src/event/
On this copy of it, there were only minor modifications by people
other than me, and these are below the copyright threshold; only
non-epoll backends (which remain under the GPL) were developed by
somebody else.
2023-09-26 15:47:09 +02:00
Max Kellermann
101e12cf9a
modplug: add patch to remove the deprecated register
keyword
2023-09-26 11:48:44 +02:00
Max Kellermann
26467e61a3
Merge branch 'consume_single_oneshot-restore' of https://github.com/jcorporation/MPD
2023-09-26 11:43:27 +02:00
Max Kellermann
fbdd2324a5
sticker/Database: add method Reopen()
2023-09-26 10:14:05 +02:00
Max Kellermann
dc31aa6a61
decoder/Plugin: remove unused and broken wrapper method ContainerScan()
2023-09-26 10:13:42 +02:00
Max Kellermann
5b28a987e5
util/IntrusiveForwardList: add method remove_and_dispose_if()
2023-09-22 11:32:40 +02:00
Max Kellermann
78d28063c4
util/IntrusiveForwardList: push_{front,back}() returns iterator
2023-09-22 11:32:33 +02:00
Max Kellermann
64647edbe1
lib/fmt/SocketAddressFormatter: new library
2023-09-19 11:22:39 +02:00
Max Kellermann
b36f5f1ec4
net/ToString: use #pragma once
2023-09-18 22:01:40 +02:00
Max Kellermann
592649d3f2
net/ToString: check family==AF_INET6 instead of looking for colons
2023-09-18 21:59:27 +02:00
Max Kellermann
9398599816
net/ToString: use libfmt
2023-09-18 21:58:55 +02:00
Max Kellermann
61c29473d3
net/ToString: append port only if it is non-zero
2023-09-18 11:11:00 +02:00
Max Kellermann
5fd2fc77f3
net/ToString: add null check
2023-09-18 11:08:16 +02:00
Max Kellermann
3eb0681e3d
net/ToString: use SocketAddress::GetLocalRaw()
2023-09-18 10:54:52 +02:00
Max Kellermann
e831af35fd
input/curl: move code to CreateEasy()
2023-09-17 14:26:47 +02:00
Max Kellermann
fb2e0f734e
lib/fmt/ToBuffer: add overload with StringBuffer parameter
2023-09-16 23:05:48 +02:00
Max Kellermann
3d69f43cff
event/Loop: include SocketEvent.hxx only if HAVE_THREADED_EVENT_LOOP
2023-09-16 22:55:04 +02:00
Max Kellermann
41b1931d91
event/Loop: move the poll_backend to the top
...
This is where all sockets are registered, so it should be initialized
first and destructed last.
2023-09-16 22:45:45 +02:00
Max Kellermann
f086444e4a
lib/curl/Easy: add method SetRequestBody(std::string_view)
2023-09-16 22:39:03 +02:00
Max Kellermann
b8210bbc45
lib/avahi/Poll: fix copyright header
2023-09-16 22:39:03 +02:00
Max Kellermann
ce2965b5bc
io/uring/meson.build: disable io_uring on Android
...
On Android, the feature is forbidden by a seccomp filter, see
https://security.googleblog.com/2023/06/learnings-from-kctf-vrps-42-linux.html
2023-09-16 22:39:03 +02:00
Max Kellermann
18000ff499
io/uring/Handler: remove unused header
2023-09-16 22:39:03 +02:00
Max Kellermann
6f7dce6dca
test/util/TestIntrusiveForwardList: implement size() only if options.constant_time_size
is set
2023-09-16 22:39:03 +02:00
Max Kellermann
175524ad02
util/IntrusiveForwardList: make end() non-static
...
So we can have a `const` overload which is important for some
algorithm templates.
2023-09-16 22:39:03 +02:00
Max Kellermann
bfbde72676
util/Intrusive*: insertion methods return an iterator
2023-09-16 22:39:03 +02:00
Max Kellermann
f76583a08a
util/IntrusiveList: document the erase() return value
2023-09-16 22:39:03 +02:00
Max Kellermann
6d39b401b5
util/IntrusiveForwardList: add method iterator_to()
2023-09-16 22:39:03 +02:00
Max Kellermann
f448bfd3f3
util/IntrusiveForwardList: add option cache_last
2023-09-16 22:39:03 +02:00
Max Kellermann
64b0587e78
util/OptionalField: new library
2023-09-16 22:39:03 +02:00
Max Kellermann
9fe813e572
util/IntrusiveForwardList: add pop_front_and_dispose()
2023-09-16 22:39:03 +02:00
Max Kellermann
b0da0bbf8b
util/IntrusiveForwardList: pop_front() returns reference
2023-09-16 22:39:03 +02:00
Max Kellermann
5c44082b77
util/IntrusiveForwardList: add non-static insert_after() implementation
2023-09-16 22:39:03 +02:00
Max Kellermann
df7ed27b78
util/IntrusiveForwardList: fix move operator, really swap counter
2023-09-16 22:39:03 +02:00
Max Kellermann
bef7ce37d9
RemoteTagCache: use the pop_front() return value
2023-09-16 22:39:03 +02:00
Max Kellermann
c994fe4879
io/uring/meson.build: detect liburing with include_type=system
...
This avoids breakages due to `-Wgnu-anonymous-struct`.
2023-09-12 10:20:58 +02:00
Max Kellermann
50f0163f5f
time/SystemClock: pass by value
2023-09-12 09:56:06 +02:00
Max Kellermann
481c1b6f2e
lib/dbus/ReadIter: add method GetBool()
2023-09-12 09:53:58 +02:00
Max Kellermann
474b6610fa
lib/dbus/Error: add method GetName()
2023-09-12 09:53:15 +02:00
Max Kellermann
11c49da871
io/FileReader: remove unused method Close()
...
It's enough to have the destructor.
2023-09-12 09:53:06 +02:00
Max Kellermann
678828b56f
io/FileOutputStream: remove obsolete maybe_unused
2023-09-12 09:43:14 +02:00
Max Kellermann
9e802ad721
util/StringCompare: add pure
attribute
2023-09-12 09:34:52 +02:00
Max Kellermann
859ffddea3
io/BufferedReader: fix ReadFullT() after std::span migration
2023-09-12 09:32:20 +02:00
Max Kellermann
daf935d310
util/HexFormat: add non-const overload
2023-09-12 09:11:38 +02:00
Max Kellermann
99765cc704
modplug: add patch to remove the deprecated register
keyword
2023-09-11 22:17:45 +02:00
Max Kellermann
f68305bf00
util/NumberParser: remove obsolete __ANDROID_API__ check
2023-09-11 22:12:13 +02:00
Max Kellermann
517c234461
lib/zlib/GzipOutputStream: use MAX_WBITS
2023-09-11 22:02:04 +02:00
Max Kellermann
a58275591d
util/StaticVector: add methods erase(), pop_front()
2023-09-11 21:59:28 +02:00
Max Kellermann
a2f4fb9ddb
util/StaticVector: add method pop_back()
2023-09-11 21:59:21 +02:00
Max Kellermann
b2acf02af9
util/StaticVector: push_back(), emplace_back() return reference
...
Imitating std::vector since C++17.
2023-09-11 21:59:12 +02:00
Max Kellermann
d5b1ca1a52
util/StaticVector: use emplace_back() to implement push_back()
...
For this class, both are equal.
2023-09-11 21:58:56 +02:00
Max Kellermann
339b9f6e7b
net/StaticSocketAddress: add method GetSteadyPart()
2023-09-11 21:27:12 +02:00
Max Kellermann
35cfa6efa3
net/StaticSocketAddress: add SocketAddress cast constructor
2023-09-11 21:27:12 +02:00
Max Kellermann
34ec024bf4
net/AllocatedSocketAddress: add method GetSteadyPart()
2023-09-11 21:27:12 +02:00
Max Kellermann
75aa08ed6b
tag/Pool: use a power-of-2 hash table size
...
This is simpler to calculate and the advantage of using a prime is
negligible anyway.
2023-09-11 21:23:11 +02:00
Max Kellermann
c8dc1e0665
tag/Pool: use class IntrusiveHashSet intead of rolling a custom hash table
2023-09-11 21:15:28 +02:00
Max Kellermann
847ae7dd7c
util/IntrusiveHashSet: add insert_check_if()
2023-09-11 21:15:28 +02:00
Max Kellermann
44f55e1866
util/IntrusiveList: add missing initializer to insert_after()
...
We must not call std::next() if the list head was not yet initialized.
This was missing in commit 7065425927
2023-09-11 21:15:28 +02:00
Max Kellermann
c391adad10
tag/Pool: move code from calc_hash() to util/djb_hash.cxx
2023-09-11 20:53:37 +02:00
Max Kellermann
f578b06d83
tag/Pool: move calc_hash() returns std::size_t
2023-09-11 20:51:44 +02:00
Max Kellermann
0748f75d9b
tag/Pool: rename TagPoolSlot
to TagPoolItem
2023-09-11 20:44:55 +02:00
Max Kellermann
7dff29bcd1
util/IntrusiveHashSet: add option zero_initialized
2023-09-11 20:34:17 +02:00
Max Kellermann
3e09f95b40
tag/Pool: enable option zero_initialized
...
Commit 44beae519d
caused the MPD
executable to grow by more than 1 MB because the `slots` array
suddenly was not zero-initialized anymore, because the doubly-linked
list is circular, while the singly-linked list is zero-terminated.
This option moves the array back to the `bss` section.
2023-09-11 20:32:26 +02:00
Max Kellermann
7065425927
util/IntrusiveList: add option zero_initialized
2023-09-11 20:30:38 +02:00
Max Kellermann
f01793ad4a
util/Intrusive*: move constant_time_size
to an options struct
...
This makes it easier to add more options later.
2023-09-11 19:18:36 +02:00
Max Kellermann
1f495efb46
test/LoadDatabase: ignore tag/charset mismatches
...
This program shouldn't fail just because the configuration doesn't
match - it has no configuration, it's just a dumb test program.
2023-09-07 09:54:03 +02:00
Max Kellermann
2c01e79b47
SongSave: omit FixTagString() for strings from the database file
...
Strings in the database should have been sanitized already, so let's
not waste CPU on this.
2023-09-06 16:12:20 +02:00
Max Kellermann
a573d57de8
tag/Builder: remove unnecessary explicit AddItem() overload
2023-09-06 16:10:31 +02:00
Max Kellermann
2f4e2935a3
db/upnp, playlist/pls: use AddItem(std::string_view)
2023-09-06 16:08:42 +02:00
Max Kellermann
44beae519d
tag/Pool: use doubly-linked list
...
This adds some memory overhead but eliminates the linear search from
tag_pool_put_item().
2023-09-06 16:00:25 +02:00
Max Kellermann
b896711fc6
tag/Pool: fix crash in tag_pool_put_item()
...
Regression by commit 76bdfabcc5
2023-09-06 15:53:17 +02:00
Max Kellermann
76bdfabcc5
tag/Pool: use class IntrusiveForwardList
2023-09-06 15:33:26 +02:00
Max Kellermann
b35e8a588f
util/IntrusiveForwardList: add operator++(int)
2023-09-06 15:31:07 +02:00
Max Kellermann
6c48f5ac63
tag/Pool: use std::array
2023-09-06 15:10:47 +02:00
Max Kellermann
1448f52eac
util/VarSize: convert static_assert to concept check
2023-09-06 15:05:26 +02:00
Max Kellermann
c96e8ab47c
db/simple/DirectorySave: optimize duplicate checks with std::set
...
This reduces the CPU usage for loading a large database by more than 50%.
2023-09-06 14:56:41 +02:00
Max Kellermann
2c4ef4460f
db/update/SpecialDirectory: more std::string_view migration
2023-09-06 14:51:37 +02:00
Max Kellermann
20bbe1b57b
fs/Traits: add GetFilenameSuffix() overload with std::string_view
2023-09-06 14:50:36 +02:00
Max Kellermann
449d59af2f
db/simple/Directory: use operator== to compare strings
2023-09-06 14:30:08 +02:00