Max Kellermann
6ee7d88af0
db/update/Archive: fix inverted nullptr check
...
Regression by commit bbdf2dcf1e
2019-05-22 10:18:18 +02:00
Max Kellermann
bbdf2dcf1e
db/simple/Song: wrap in std::unique_ptr<>
2019-05-21 22:46:34 +02:00
Max Kellermann
02bb47dd08
db/simple/Song: move struct Disposer to separate header
...
Allow forward-declaring it.
2019-05-21 22:42:32 +02:00
Max Kellermann
0c48b8d084
db/simple/Song: add noexcept
2019-05-21 22:41:21 +02:00
Max Kellermann
8462559b2f
db/simple/Song: include cleanup
2019-05-21 22:40:08 +02:00
Max Kellermann
214ddee2f5
util/Time*: move to time/
2019-05-08 15:47:58 +02:00
Max Kellermann
2b4e9cc635
db/update/Service: wrap UpdateWalk in std::unique_ptr<>
2019-04-26 14:55:00 +02:00
Max Kellermann
c7c303eec3
db/DatabaseListener: add noexcept
2019-04-24 14:57:30 +02:00
Max Kellermann
ccc58f2a32
Merge branch 'v0.21.x'
2019-04-18 11:49:05 +02:00
Eugene Gorodinsky
8d18b4c24b
Fix meson.build to work properly with '-Ddatabase=false'
2019-04-18 08:55:13 +02:00
Max Kellermann
093bf5d859
event/*, ...: make GetEventLoop() const
2019-04-04 20:07:57 +02:00
Max Kellermann
ea5e6d8f33
Merge branch 'v0.21.x'
2019-04-04 10:29:58 +02:00
Max Kellermann
f6941f9a44
event/SocketMonitor: don't cancel if OnSocketReady() returns false
...
Expect OnSocketReady() to cancel events. If it returns false, the
SocketMonitor may be destructed already. This fixes a use-after-free
bug in the "httpd" output plugin.
2019-04-04 10:24:58 +02:00
Max Kellermann
c60d374fc8
db/DatabasePlaylist: pass DatabaseSelection to search_add_to_playlist()
2019-03-25 19:04:34 +01:00
Max Kellermann
30e0644722
db/simple: call ReturnSong() on mounted database
...
Fixes a memory leak, or an assertion failure in the debug build.
2019-02-22 14:52:13 +01:00
Max Kellermann
3ada464020
db/simple: use C++11 initializer
2019-02-22 14:52:01 +01:00
Max Kellermann
b59f37bc0a
db/simple/Directory: close the Database in destructor
...
Fixes assertion failure.
2019-02-20 22:50:15 +01:00
Max Kellermann
cf2d171ccc
db/simple: reorder checks in assert() to fix assertion failure
...
`light_song.Get()` could cause an assertion failure because the
`Manual<>` object must not be used if uninitialized.
Regression by commit ebc006ab52
2019-02-20 21:24:01 +01:00
Max Kellermann
6c28adbcd2
db/Plugin: use std::unique_ptr<> to manage Database pointers
2019-02-20 20:43:31 +01:00
Max Kellermann
2125e3ed57
db/simple/Directory: add noexcept
2019-02-20 20:39:49 +01:00
Max Kellermann
037bb07d08
db/VHelper: include DetachedSong.hxx to fix GCC 9 build failure
...
GCC 9's libstdc++ is unable to use forward-declared types as
std::vector item because the compiler wants to resolve `noexcept()` on
the item destructor.
2019-01-21 14:34:12 +01:00
Thomas Klausner
3a0480a482
Add missing include of stdlib.h.
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/456
2019-01-15 16:52:40 +01:00
Max Kellermann
7ec887eea2
Merge branch 'add-meson-dependencies' of git://github.com/jacobvosmaer/MPD
2019-01-04 19:06:49 +01:00
Max Kellermann
1c7bd7d5c4
db/update/InotifyQueue: check for ACK_ERROR_UPDATE_ALREADY
...
Since commit cc64c715a2
, UpdateService::Enqueue() throws
ProtocolError(ACK_ERROR_UPDATE_ALREADY) instead of returning 0.
2018-12-28 14:02:41 +01:00
Max Kellermann
3c4ed9cbe3
db/update/InotifyQueue: catch UpdateService::Enqueue() exceptions
2018-12-28 14:00:58 +01:00
Max Kellermann
2677b90244
db/update/InotifyQueue: add noexcept
2018-12-28 14:00:55 +01:00
Max Kellermann
1b20fa441d
db/update/InotifyQueue: update code comment
2018-12-28 14:00:10 +01:00
Jacob Vosmaer
66f5b0fed7
Add boost_dep in subdir meson.build files
2018-12-09 17:20:47 +01:00
Max Kellermann
4b7078297d
db/upnp: use the generic ::CollectUniqueTags() function
...
This function implements the "group" feature on top of the
Database::Visit() method.
2018-11-19 20:08:10 +01:00
Max Kellermann
841694ccf2
db/Interface: document CollectUniqueTags()
2018-11-19 19:40:00 +01:00
Max Kellermann
bda77ffc5b
db/Interface: remove IsPlugin(), use dynamic_cast
instead
2018-11-19 19:38:20 +01:00
Max Kellermann
ed9ece5ea3
db/Interface: make the constructor protected
2018-11-19 19:38:20 +01:00
Max Kellermann
ce49d99c2f
check.h: remove obsolete header
...
Since we switched from autotools to Meson in commit
94592c1406
, we don't need to include
`config.h` early to properly enable large file support. Meson passes
the required macros on the compiler command line instead of defining
them in `config.h`.
This means we can include `config.h` at any time, whenever we want to
check its macros, and there are no ordering constraints.
2018-11-19 16:33:49 +01:00
Max Kellermann
303b3071e4
db/UniqueTags: remove pure
attribute because function may throw
2018-11-19 11:32:53 +01:00
Max Kellermann
eb6d5f34fc
db/UniqueTags: include cleanup
2018-11-19 11:11:45 +01:00
Max Kellermann
f5c9071494
*: copyright year 2018
2018-10-31 17:54:59 +01:00
Max Kellermann
66ab2de578
Merge branch 'v0.20.x'
2018-10-22 18:20:29 +02:00
Max Kellermann
db27bb76e2
db: fix broken command "list ... group"
...
Grouping in the "list" command was completely broken from the start,
unlike "count group". I have no idea what I have been thinking when I
wrote commit ae178c77bd
, but it didn't
make any sense.
This commit is a rewrite of the feature.
For clients to be able to detect this feature, this commit also
increments the protocol version.
2018-10-22 13:08:24 +02:00
Max Kellermann
7cfe929c36
db/Count: print empty group if song without grouped tag exists
...
Be consistent with "list" responses.
2018-10-22 12:42:18 +02:00
Max Kellermann
6c06244e83
db/Count: move code to tag/VisitCallback.hxx
2018-10-22 11:50:51 +02:00
Max Kellermann
0340b01392
db/Count: use ApplyTagFallback()
2018-10-22 10:46:26 +02:00
Max Kellermann
94592c1406
build with Meson instead of autotools
...
So long, autotools! This is my last MPD related project to migrate
away from it. It has its strengths, but also very obvious weaknesses
and weirdnesses. Today, many of its quirks are not needed anymore,
and are cumbersome and slow. Now welcome our new Meson overlords!
2018-10-14 23:41:38 +02:00
Max Kellermann
6c40a27809
db/update/ExcludeList: fix variable name in #else block
2018-10-01 08:40:53 +02:00
Max Kellermann
8736a3533b
db/update/ExcludeList: add missing #ifdef
2018-10-01 08:40:15 +02:00
Max Kellermann
0701333ec1
db/proxy: forward filter as expression to server
...
This adds support for the full set of MPD 0.21 filter types.
2018-09-02 22:39:45 +02:00
Max Kellermann
a8e70f0901
db/proxy: forward sort
and window
to server
2018-09-02 17:51:30 +02:00
Max Kellermann
c7c32a3ce9
db/Print: move sort/window emulation code to class DatabaseVisitorHelper
...
That way, each plugin can decide to implement it better.
2018-09-02 17:37:02 +02:00
Max Kellermann
94694e0f33
db/simple: pass DatabaseSelection to WalkMount()
...
This passes the new `sort` and `window` attributes to the mounted
database.
2018-09-02 17:13:35 +02:00
Max Kellermann
a73176a1e9
db/Helpers: fix include guard
2018-09-02 12:32:33 +02:00
Max Kellermann
e6a974a93e
db/Selection: add sort
and window
...
Remove them as parameters from `db_selection_print()`.
2018-09-02 11:10:04 +02:00
Max Kellermann
9894967fcb
db/Selection: move bool
attribute to the end
...
May allow a better memory layout.
2018-09-02 11:10:04 +02:00
Max Kellermann
92da483ecd
db/Selection: add noexcept
2018-09-02 11:10:04 +02:00
Max Kellermann
9cc960ac5e
db/proxy: require MPD 0.19
2018-09-02 11:07:32 +02:00
Max Kellermann
18dd082f1e
db/proxy: use ~0 instead of -1
...
No undefined behavior.
2018-09-02 11:06:08 +02:00
Max Kellermann
81b734be10
db/Interface: add "noexcept"
2018-09-02 10:20:48 +02:00
Max Kellermann
c59be7ced3
db/Interface: add more documentation about exceptions
2018-09-02 10:19:10 +02:00
Max Kellermann
c5c4d4a57e
db/proxy: forward the audio format
...
Requires libmpdclient 2.15.
2018-09-02 08:38:23 +02:00
Max Kellermann
2d0b429b6a
db/proxy: require libmpdclient 2.9
2018-09-02 08:21:11 +02:00
Max Kellermann
60620d9af5
db/Print: move variable i
2018-09-02 08:17:22 +02:00
Max Kellermann
15b2a4862e
protocol/RangeArg: add Contains()
2018-09-02 08:17:22 +02:00
Max Kellermann
2915d2dd0f
protocol/RangeArg: add IsAll()
2018-09-02 08:17:22 +02:00
Max Kellermann
993f8d6a5e
db/Print: pass RangeArg to db_selection_print()
2018-09-02 08:17:22 +02:00
Max Kellermann
ec54754e22
Compiler.h: move to util/
2018-08-20 16:19:17 +02:00
Max Kellermann
cc64c715a2
db/update/Service: Enqueue() throws on error
2018-08-19 23:15:52 +02:00
Max Kellermann
01d3777574
decoder/Thread, ...: log all exceptions
2018-08-09 11:14:40 +02:00
Max Kellermann
d929d0c26f
song/Filter: move each class into a separate source
2018-08-02 13:54:36 +02:00
Max Kellermann
90201e9970
DetachedSong, db/LightSong, SongFilter: move to src/song/
2018-08-02 13:51:18 +02:00
Max Kellermann
f7fb8a33d7
db/Print: pass TagType to PrintUniqueTags()
2018-07-25 11:21:47 +02:00
Max Kellermann
0505cb8f7e
db/Print: move code to PrintSongUris()
2018-07-25 11:18:45 +02:00
Max Kellermann
2cfccc1c34
SongFilter: make Item an interface
...
Prepare to allow more complex expressions.
2018-07-25 11:04:41 +02:00
Max Kellermann
426b9672cf
db/Configured: use struct ConfigData
2018-07-17 23:06:17 +02:00
Max Kellermann
ad866f7a7d
db/update/Config: use struct ConfigData
2018-07-17 22:41:28 +02:00
Max Kellermann
338a6f2a96
db/update/Walk: move UpdateConfig initialization to class UpdateService
2018-07-17 22:39:52 +02:00
Max Kellermann
c3aa53cc97
db/update/Walk: move configuration to struct UpdateConfig
2018-07-17 22:36:37 +02:00
Max Kellermann
5b192beaa5
config/Global: remove ConfigBlock::SetUsed() call, let caller do that
...
This fixes an old bug which caused the "unused" warnings to be
unreliable; only the first block in the list was marked as being
"used", no matter if it was really used, and the rest was never marked
as "used", suppressing all warnings for them.
2018-07-17 21:08:41 +02:00
Max Kellermann
af33a9f4b8
config/Block: allow moving name and value
2018-07-17 20:27:46 +02:00
Max Kellermann
99d5b61698
fs/Path: add operator/(Path,Path)
...
Modeled after std::filesystem::operator/() from C++17.
2018-07-17 18:33:32 +02:00
Max Kellermann
816603fd9a
config/Config*: rename files, drop "Config" prefix
2018-07-16 19:50:07 +02:00
Max Kellermann
72b6c09a73
db/simple: add an AudioFormat to each Song
2018-07-06 22:49:02 +02:00
Max Kellermann
2c30e16371
db/simple/Song: remove obsolete comment
2018-07-06 21:50:53 +02:00
Max Kellermann
72437ca9e2
db/simple/Song: use C++11 initializers
2018-07-06 21:49:52 +02:00
Max Kellermann
9a29d02e7e
Merge branch 'v0.20.x'
2018-07-06 19:43:01 +02:00
Max Kellermann
b8259e604a
db/update/{Walk,ExcludeList}: use InputStream to read .mpdignore
...
Supports .mpdignore on NFS/SMB and others (closes #290 ).
2018-07-06 19:19:04 +02:00
Max Kellermann
60d5bf0240
util/StringFormat: new utility library
2018-07-06 19:07:02 +02:00
Max Kellermann
63406efcd8
db/update/ExcludeList: allow comments only at start of line
2018-07-06 18:27:17 +02:00
Max Kellermann
d5c132fca0
db/update/ExcludeList: move code to ParseLine()
2018-07-06 18:25:27 +02:00
Max Kellermann
45139f94bb
db/LightSong: pass URI to constructor
2018-07-06 16:56:12 +02:00
Max Kellermann
80cb680fca
db/LightSong: implicit initialization
2018-07-06 16:50:37 +02:00
Max Kellermann
b9ff6383a4
db/LightSong: make Tag a reference
...
This enforces the "not nullptr" rule.
2018-07-06 16:47:47 +02:00
Max Kellermann
ebc006ab52
db/simple: wrap LightSong in Manual<>
...
Prepare to make LightSong non-assignable.
2018-07-06 16:46:01 +02:00
Max Kellermann
24874b8286
Merge branch 'v0.20.x'
2018-06-03 14:22:29 +02:00
Max Kellermann
8dcb1f805d
db/proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort"
...
Closes #284
2018-05-28 20:14:07 +02:00
Max Kellermann
a8b9e5b9b9
db/proxy: add "password" setting
...
Closes #283
2018-05-28 20:01:08 +02:00
Max Kellermann
43a43c1e2b
release v0.20.19
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlriEvAQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEnEpD/4+yH4ydc9l1/j5AD08jFyUUe6YSnC8gLsG
DRrSOU1BQltYAPhlRGxA/HlKxboaT7v5qcXBdIV+HwKs6149j8qxip8g8PYoUBmB
mn6YckjEPCLpLe4WSvfGdm5a1aI7nMC76wHBvTPCAMTZk9FAmUED4DqgNYmWycOd
MpXZbzZdvb2Ti4dQARrK8AbMjTD44LXDOhBgWYnZLpo1ovYhnGvTPAElCQN23tbT
VMcJPYe86lzgs1vWwgURzkn7Y3CaSMF3G+aKw/oLEK3giZmE0y7Kov9Ycy4IC6+3
aXuEP9drMIltAyZ2hmeH6JFigbgQbDhwuAu1biYLLukwa0oEOEFTP1+yxAVbi/vx
58rD6uWJeFbqPna6146TAYVi8QeymJWfhFWxkcol2u7etrIxXpX//qo8Mv+AiLor
wOrTerKgRFYmtSH14wIoSfKsn2wmsXOhDE38h621PAzqvQXDzrBLMo4HMJ4y+G+q
Y6LZWatweL6I2qMsOKWvECOJNxQJrkDFOLq8Mj+O4v6iiLQWhiul1hi2g8EOcRMI
SkdWTakla3LbmuUN1dKQJwoojNevnP5yPXI15rM6JMZkXJcWxi4mvnzoAFnBTmov
57GxpShueo2yy9yrFgS7hBuRsBXzYxze/xY0LSYSO4SjCjNCnWXse6O9pI7JqFbI
m5JJW96Nqg==
=1wwq
-----END PGP SIGNATURE-----
Merge tag 'v0.20.19'
release v0.20.19
2018-04-26 20:06:41 +02:00
Max Kellermann
ac395429c3
db/proxy: implement the group_mask parameter in VisitUniqueTags()
...
Closes #258
2018-04-26 19:43:33 +02:00
Max Kellermann
388768b3a6
db/proxy: call mpd_search_cancel() after search error
...
Fixes "search already in progress" errors.
2018-04-26 19:41:19 +02:00
Max Kellermann
65bbb0e0aa
release v0.20.17
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlqAMO0QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEg8eD/49NlFvlNdkamgYvh7MI1Sn67yKAwQt+N51
W0hVnmXwPoSg76gfWw8J9kVyQy/jEkaCxsPF/UuEbH5jzqAC0y8hwYVRkJaRc9wN
ZfwHvLHeaUxQweoguEwRSREy4ZC4ImQOK+eAxI1R43mqxxyhko1Akc1NmRVWzYfv
/FGmAjTi1U6FR/yDpdSFn1NdlPmIgZ4WDuRsDT2NrshX/Bb32FiyZBytvek2P8n/
QNgXv18E4yWXSb+zBYhPy/eaKhGasyjI3cbht1F0hNW9Yo/BsFxDuwXrX1vNBaOS
E3Dux4s/nfcJ4RMRjmrkFwXImCvxt7+AGfh8RYBXuwqMExXz2kZjIs4ZVvO7Nu9A
pFDJQwRIojXMfk73LU/MEpmNNEXhvfQLYkrM7poSqYaOr8SWMszqSgNnnfq6+flB
sJbstgAStI6lL0jy0HrtMTvPVEiAGh6wCvMy/r2G9XUAyw76ccOg7MaIldn0MHJv
A51+GfRTi4ILH0ReL1BGAg9nG97uFmRAWGkfkhtyD540xGRk7x5R8/ml4zFogHN6
SbrV0NPdwk+uFd0y2znQT2gWyjc0id4WEKEoHX+Gl6c5qtPIfrq+PQPyk9kR+u+i
AxwqMoKQer6Ji5qnsvCiKSkaGGiVNivrZ11jDWNCZaKjmvlKlvj/P5GxbPpORorq
v4ru/4vNXQ==
=v4t8
-----END PGP SIGNATURE-----
Merge tag 'v0.20.17'
release v0.20.17
2018-02-11 13:22:43 +01:00
Max Kellermann
c801936e53
db/update/Service: set the update thread name
2018-02-09 18:48:14 +01:00
Max Kellermann
250b6a3d52
release v0.20.16
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlp2BjEQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEl0HEACEOGoX3a8slWwuPsqdOu+thc73SIMVzqF9
xzxFbGLyp0MzXTAgU+SLzfbD4/gerglC7TRbGzsvVu7iwxXeKhEL/SJ5RhrCQM3E
U8jaOeavMWeqX60pdbTz2zw4maKAD7U3fWcYxoh09EBaZa7Mm/j7URPLqrlWT7VD
iWqdLcC4HZarOxBbq0CY7rQPVsAVZZ5l43MDV6hiInSn0wWo783G6BtYFgvgH8qk
pZIL0yScQrjyj9D0fgfDC9DBVfHqMqpWW5G2rNhsXTUtpdb9V5tB2B8ZbIUWJfD7
aVFztCwwmbiBle4UBHfyyDLfZkBZmU/qKc9+I3WUxT4DLbA8gDXZFjb7zU80NMge
xzbXeO7XvxvSm7groqRh3Vy0nbkBMB9wTwzre3ULhYyhY2vVISb9lSyRtUE9xuR8
SL2zpdgVcFdTUSKat63ikeU4sbYvssra3ZDRnAyoFF2iVpT2J2B95ZVNfaIYbRSQ
lidlz8q3Px5GUDe3D0ao3hFk5t1Hg2jXx3nbz/Kk+SwZpsaiCewl6zjptye7R7zD
e9OMxYrU+/opsynRE5NFuTvkRKUG1kC47/rWgGZWI9Cbv8+lse1NO0c7VzM7o1hH
Bfk5AhEkv8tLNM+39evXdNQVB0cna5ndSDOkYBcPI78/PUNd+TnrPdfI/W3NCnRl
I+CWQE3uSQ==
=+tJ2
-----END PGP SIGNATURE-----
Merge tag 'v0.20.16'
release v0.20.16
2018-02-03 19:59:29 +01:00
Max Kellermann
e573cbf032
db/update/Queue: work around GCC7 -Wuninitialized
2018-02-01 19:53:42 +01:00