Max Kellermann
2e8f42c6ad
util/StringBuffer: use std::size_t instead of size_t
2019-12-16 22:51:23 +01:00
Max Kellermann
b449627265
fs/io/Reader: relicense to BSD-2
2019-12-16 17:13:55 +01:00
Jacob Vosmaer
2b301ffd2c
lib/xiph: add missing meson dependency
2019-12-16 17:11:14 +01:00
Jacob Vosmaer
ef0765ca10
input: add missing boost meson dependency
2019-12-16 17:11:14 +01:00
Jacob Vosmaer
940206d106
filter/plugins: add missing meson dependency
2019-12-09 23:49:35 +01:00
Max Kellermann
65bbb975d2
command/fingerprint: fix inverted check
2019-12-04 16:59:01 +01:00
Max Kellermann
32799ff682
archive/zzip: improve error reporting
...
Most importantly, this commit translates ZZIP_ENOENT to
std::system_error(ENOENT) so IsFileNotFound() returns true and
find_stream_art() can suppress the log line.
2019-12-04 12:33:42 +01:00
Max Kellermann
ce093be12c
system/Error: add FormatFileNotFound()
2019-12-04 12:33:38 +01:00
Max Kellermann
2c276770f0
util/PrintException, ...: update copyright
2019-12-04 12:33:36 +01:00
Max Kellermann
75a592f629
system/Error: move code to IsErrno()
2019-12-04 12:33:33 +01:00
Max Kellermann
c129ca9f63
lib/xiph/VorbisComments: move to separate static library
...
This also reverts the previous commit which was wrong. When the
Vorbis decoder is disabled, we can't compile VorbisComments.cxx at
all.
Instead of expanding the #ifdef, this commit moves VorbisComments.cxx
to a separate library with dependencies on libvorbis (which was
missing previously, which could also lead to build failures if the
libvorbis headers were in a non-standard directory).
2019-11-20 16:12:35 +01:00
Max Kellermann
1e03457746
lib/xiph/VorbisComments: disable VorbisCommentToReplayGain() if Vorbis is disabled
...
Fixes build failure.
2019-11-20 15:51:49 +01:00
Max Kellermann
13ce07d181
output/shout: declare metadata as UTF-8
...
Apparently, Icecast defaults to ISO-8859-1 for MP3:
http://icecast.org/docs/icecast-2.4.0/config-file.html#mountsettings
This change forces Icecast to UTF-8 without having to configure it in
Icecast's configuration file.
2019-11-06 16:05:22 +01:00
Max Kellermann
43ac264f54
tag/Mask: add noexcept
2019-11-05 10:56:20 +01:00
Max Kellermann
cbaa98c1a1
input/curl: apply the "charset" parameter to Icy-Name
...
Extends the URI fragment parameter added in
commit cf9ee33928
Closes https://github.com/MusicPlayerDaemon/MPD/issues/679
2019-11-04 15:44:24 +01:00
Max Kellermann
ed327c597a
lib/icu/Converter: Create() returns std::unique_ptr
2019-11-04 15:44:06 +01:00
Max Kellermann
496f43e25d
Merge branch 'v0.21.x'
2019-11-04 15:07:46 +01:00
Max Kellermann
ebb952c4ad
neighbor/meson.build: disable if -Ddatabase=false
...
Fixes yet another build failure (which however only affects the 0.22
branch).
Closes https://github.com/MusicPlayerDaemon/MPD/issues/666
2019-11-04 14:18:48 +01:00
Max Kellermann
bea3b954a5
meson.build, SongUpdate: disable db-specific archive code if -Ddatabase=false
...
Fixes another build failure.
2019-11-04 14:15:48 +01:00
Max Kellermann
129d8e89b9
lib/sqlite: disable if -Ddatabase=false
...
Fixes build failure in StickerCommands.cxx.
2019-11-04 14:10:03 +01:00
Niklas Haas
65778a3774
output/Jack: mark ports as terminal
...
This is the correct thing to do for ports from which a signal ultimately
"originates", such as is the case with mpd.
2019-10-29 10:07:44 +01:00
smutbert
4ecd4761c2
add tag "Conductor"
2019-10-25 10:12:32 +02:00
Max Kellermann
e1867a99e9
release v0.21.16
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl2m6cwQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEuMlD/9W6UTA9WfbeB2k8F2gFvy30w3jarsIdANG
iRl2qW8a/MSp6zNj5t3rIH/JTOPEVXgB7c844gIC2VHkKAu4M3kV2sqa7cDEcq6o
tFH5npemuCFbpkkAqXHpgFindWGMOqZy01PCN8m70y9IbfmI0Q25jngKeeuzgZ9O
4DHw9IniWNamAi9H3MdGt6BpyuQ+EJ+FOfuJdsJkLgfK15qMn/3LwNoUyCxjyK/K
brdQO0qpBg7dLZoGb6ER7qkyV1Cp+z/Mqeeocn4iQf3RuepIKzhZFMB1MY9FS7O1
YAA89Lpk9mvLqx1/LkArrPEOv7k5Ia5KSmxZJ5dsrdXm/TKVM1k0MxZuE7LoXLXp
wbdhXFoyhuL6lwLkw20wj1zqcTGMAYIp6t48YbDlVy59f/9OVROr++pCQsY+3L2t
JPY90z6hf6yDF5yZCucSt7gin/WXRdeQLTgAxd8EqGqFgIRrW0GZhssg+7O1iGCq
aSAVlxfzhVFxz7eyo4u3Dq/+d6gh3NRzV6exUYMxp3WHu7eweemlnKyxPxQ1lvSF
5EkZXC56wQp0JIcIRYLEXkJN8lmIy/i0xHaOLDB7cJN23CC5Z68Up6peCzvVPp+E
PIzOtT+4/FnQ6euu6KLHeiDyTWxdmGSrSP1W6cc/FpyLU86ZV/5tLg0bEaNxb9Sl
lYfRth0D/A==
=9Cv+
-----END PGP SIGNATURE-----
Merge tag 'v0.21.16'
release v0.21.16
2019-10-16 12:03:12 +02:00
Max Kellermann
12a86c4975
queue/PlaylistEdit: fix relative destination offset when moving a range
...
Commit 13208bf5a7
added range support to
the `move` command, but applied the wrong offset to the `to` variable.
When the source range is before the current song, and the song thus
gets decremented by the range size, then the final destination offset
must also be decremented by the range size.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/663
2019-10-15 17:00:16 +02:00
Max Kellermann
0b9435858b
storage/curl: unescape file names from PROPFIND
...
This is the last missing piece for https://github.com/MusicPlayerDaemon/MPD/issues/662
2019-10-15 16:49:17 +02:00
Max Kellermann
f0386459ee
storage/curl: follow redirects for collections without trailing slash
2019-10-15 16:42:39 +02:00
Max Kellermann
e98d4670b8
storage/curl: work around different case in hex digits
2019-10-15 16:26:53 +02:00
Max Kellermann
56cc42b752
storage/curl: use MapUTF8() to reuse existing escaping code
...
Commit 29f78b18b1
continued.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/662
2019-10-15 16:26:53 +02:00
Max Kellermann
ead208987d
storage/curl: unescape URI in MapToRelativeUTF8()
2019-10-15 16:26:49 +02:00
Max Kellermann
364acc8949
lib/curl/Escape: add CurlUnescape()
2019-10-15 13:39:02 +02:00
Max Kellermann
a8f4d2b6fc
storage/curl: move code to EscapeUriPath()
2019-10-15 13:24:06 +02:00
Max Kellermann
0eb113e7c6
lib/curl/String: OO wrapper for allocated strings returned from CURL
2019-10-15 13:13:39 +02:00
Max Kellermann
b2c4a5db14
util/UTF8: use uint8_t
instead of unsigned char
2019-10-14 13:44:11 +02:00
Max Kellermann
cadfccfd0c
util/UTF8: add noexcept
2019-10-14 13:41:06 +02:00
Max Kellermann
c89c7f71a2
thread/Util: lower the real-time priority from 50 to 40
...
On linux-rt, kernel IRQ threads are configured with priority=50, and
this change configures MPD somewhat below that priority, leaving some
room for other programs to be configured in between.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/643
2019-10-09 14:40:02 +02:00
Andre Heider
96a9670c69
lib/icu: fix build with iconv()
2019-10-07 13:34:04 +02:00
Max Kellermann
dcc5ce6792
storage/curl: request the "resourcetype" property to fix update
...
Without requesting the property, "good" WebDAV servers would not send
it, and so MPD could never recognize a directory, failing the database
update.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/660
2019-10-07 12:44:48 +02:00
Max Kellermann
23d08820a2
db/update/Walk: fix crash when music_directory is not a directory
...
Add a runtime sanity check to avoid the assertion failure.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/660
2019-10-07 12:24:25 +02:00
Max Kellermann
2f3e94f8d0
output/MultipleOutputs: add method IsOpen()
2019-09-26 14:52:19 +02:00
Max Kellermann
f616bfe354
output/MultipleOutputs: add method HasName()
2019-09-26 14:48:31 +02:00
Max Kellermann
f2c3d86612
output: use StringIsEqual()
2019-09-26 14:48:31 +02:00
Max Kellermann
d7dbf47a3f
time/ISO8601: support omitting minutes
2019-09-25 21:39:25 +02:00
Max Kellermann
3db584a3ea
curl/Easy: add SetReadFunction()
2019-09-25 21:37:42 +02:00
Max Kellermann
409002b1c3
curl/Easy: add Perform()
2019-09-25 21:37:22 +02:00
Max Kellermann
29b542fd36
curl/Easy: add SetTimeout()
2019-09-25 21:36:52 +02:00
Max Kellermann
c9590db188
util/StringView: enable string_view support only on C++17
2019-09-25 21:34:48 +02:00
Max Kellermann
0643b5abad
release v0.21.15
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl2LvuAQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEg3VD/9uWiK11PPXfpAqOQgL63c1CS/6HJizwnox
n0ns3T7eJJPXy06NTwuo5M8JeAIhuysEciHlJeGBf4NIGwGGHOL3nQv3FkWJlfeh
UrIJq66gIzElZ62Jvq+7zkkfjm6A0tmQoAEoIPouus+A4RNwndpqsKSotZzLK0yY
ACkJTxl8JJj+UbLzleDKSA+RxG817onGKl+urkvNDRdD7xs3VEUX6jhddVM1n3m+
BqCaihuQZYXur45mYIwFI7H5JevRawnEX8L6tERW0cE8j5IhnnPjwYvMX+DcZoTe
DgYuGkfPTfl31QufbbetTwWITjf4nrummYrAM/fKcNJcaqZFo4hs7m7N6p9c2ebm
QCUG0On32Lvkq4/iLAxXIdoy38mPkarREB2XQebHa6j2XPFjxB01lXLGYJzPtqBu
LCFRpR+ssWeZDQ3uP+fAzlgMXmB+owWa9NVqU5vlx97TCmXInOeim6tfq1T4keGW
3VFLqM6VAw4QyhrbowU0xbvxvYkWrgpkYbM5NcfwI67xZGLsI5vnRzX05VgF6BFZ
B7g+JIWjv+Mjm1ltsvC4OlJEcCXZb0BQWvwLHq0EGeEP/R9MWYX6BxlF1V8FWR2S
bIL0qIqtZfuUI66irNn23ZCyN4DilMcZkS8f30321hB2GLputG8zZwCcjxy1a/ft
1OoHXRfKNw==
=uONC
-----END PGP SIGNATURE-----
Merge tag 'v0.21.15'
release v0.21.15
2019-09-25 21:27:31 +02:00
Max Kellermann
92495d2b0b
decoder/mpcdec: fix bogus ReplayGain values
...
Apparently, libmpcdec sets gain/peak variables to zero if they are not
present. This clashes with our formula and results in bogus values
which cause noise during playback.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/640
2019-09-13 19:52:11 +02:00
Max Kellermann
9270829b5b
ReplayGainInfo: move more code to a function
2019-09-13 19:50:49 +02:00
Max Kellermann
b6243a9945
decoder/mpcdec: merge duplicate code
2019-09-13 19:50:43 +02:00
Max Kellermann
496f88653d
ReplayGainInfo: add static method Undefined()
2019-09-13 19:46:39 +02:00
Max Kellermann
bf49c9e4e2
decoder/{dsf,dsdiff}: precalculate bit rate
2019-09-08 12:52:02 +02:00
Max Kellermann
0da9c91af2
decoder/{dsf,dsdiff}: fix displayed bit rate
...
The formula did not consider the channel count.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/639
2019-09-08 12:45:05 +02:00
Max Kellermann
d63e2c2641
db/update: scan CUE playlist contents
...
This commit adds a PlaylistPlugin attribute "as_folder" which for now
is only enabled in the "CUE" playlist plugin (which handles separate
"*.cue" files). If a playlist with this flag set is being scanned
during database update, it will be parsed and its contents will be
added to the database. This allows clients to inspect them like
directories and its contents will be searchable.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/39
2019-09-08 00:39:53 +02:00
Max Kellermann
5fdb804a50
db/simple/Song: add attribute "target"
...
Will be used for Song objects representing tracks inside a CUE file.
2019-09-08 00:32:16 +02:00
Max Kellermann
91c1274ac6
db/Song: translate relative "real_uri" paths
2019-09-08 00:31:10 +02:00
Max Kellermann
9caf90f74f
util/UriRelative: add uri_apply_relative()
2019-09-08 00:07:37 +02:00
Max Kellermann
71448e645c
util/UriExtract: use uri_get_scheme() in uri_has_scheme()
2019-09-08 00:06:52 +02:00
Max Kellermann
0509472636
util/UriExtract: add uri_is_relative_path()
2019-09-08 00:04:49 +02:00
Max Kellermann
0b956cf968
util/StringAPI: add memrchr() wrapper
2019-09-07 23:59:59 +02:00
Max Kellermann
58363cf4dd
util/UriRelative: allow "parent" to end with slash
2019-09-07 23:27:24 +02:00
Max Kellermann
2574615fa3
util/UriRelative: use StringAfterPrefix() instead of memcmp()
...
memcmp() can overrun the buffer.
2019-09-07 23:24:41 +02:00
Max Kellermann
15fbd2b4ab
util/UriRelative: use StringIsEqual()
2019-09-07 23:22:16 +02:00
Max Kellermann
ee36a48dbb
db/simple/Directory: RemoveSong() returns SongPtr
2019-09-05 21:12:10 +02:00
Max Kellermann
07f212c98c
SongSave: return DetachedSong, not a std::unique_ptr<>
...
Eliminate unnecessary dynamic allocations.
2019-09-05 20:58:04 +02:00
Max Kellermann
a1e2602c3d
SongSave: allow throwing any exception
2019-09-05 20:58:00 +02:00
Max Kellermann
b03e4ae692
queue/Save: move code to LoadQueueSong()
2019-09-05 20:56:47 +02:00
Max Kellermann
57808d1a1b
queue/Save: queue_load_song() throws on error
...
Don't catch and log exceptions here; let the caller decide.
2019-09-05 20:55:18 +02:00
Max Kellermann
7775691965
db/simple/Song: rename "uri" to "filename"
...
This attribute is not a URI; it is just the filename without its
parent directory path. To avoid confusion, let's rename it to
"filename", leaving the struct without a "uri" attribute.
2019-09-04 12:04:35 +02:00
Max Kellermann
a727150c8d
db/simple/Song: remove StringView constructor
2019-09-04 12:03:56 +02:00
Max Kellermann
949916cba1
db/simple/Song: convert NewFrom() to constructor
2019-09-04 12:03:49 +02:00
Max Kellermann
497d090814
db/simple/Song: remove static method NewFile()
2019-09-04 12:03:41 +02:00
Max Kellermann
6a13847287
db/simple/Song: add template constructor
2019-09-04 12:03:37 +02:00
Max Kellermann
cbe7d052e8
db/simple/Song: use PathTraitsUTF8::Build()
2019-09-04 12:02:18 +02:00
Max Kellermann
f4d0bd8205
db/simple/Song: make "parent" a reference, not a pointer
2019-09-04 12:02:17 +02:00
Max Kellermann
1bfede120a
fs/Traits: call std::string::reserve() in BuildPathImpl()
2019-09-04 12:01:25 +02:00
Max Kellermann
e96856032f
SongSave: use StringIsEqual()
2019-09-04 11:13:39 +02:00
Max Kellermann
05a29e8458
db/simple/Song: simplify Export()
2019-09-03 20:36:39 +02:00
Max Kellermann
7f9a8b8748
db/simple/Song: convert "uri" to a std::string
...
No longer allocate it as a "VarSize". This used to be a clever trick
to save memory 10 years ago, but these days, keeping the code
maintainable seems more important than saving a few kilobytes of
memory.
2019-09-03 20:26:47 +02:00
Max Kellermann
af3f637d3f
db/simple/Song: pass StringView to constructor
2019-09-03 20:25:04 +02:00
Max Kellermann
97a9adcbec
db/update/Archive: convert pointer to reference
2019-09-03 19:54:18 +02:00
Max Kellermann
177d3b0178
db/update/Archive: use MakeDirectoryIfModified()
2019-09-03 19:52:15 +02:00
Max Kellermann
12beb22c1d
db/update/VirtualDirectory: add LockMakeVirtualDirectoryIfModified()
2019-09-03 19:51:20 +02:00
Max Kellermann
29fd3172ee
db/update/VirtualDirectory: pass device_id to MakeVirtualDirectoryIfModified()
2019-09-03 19:49:32 +02:00
Max Kellermann
a873137702
db/update/VirtualDirectory: rename MakeDirectoryIfModified()
2019-09-03 19:49:10 +02:00
Max Kellermann
e08298a66f
db/update/Container: move MakeDirectoryIfModified() to VirtualDirectory.cxx
2019-09-03 19:37:53 +02:00
Max Kellermann
fd1826cb91
db/update/Container: move SupportsContainerSuffix() to struct DecoderPlugin
2019-09-03 19:36:56 +02:00
Max Kellermann
d5681b678c
db/update/Walk: move UpdatePlaylistFile() to Playlist.cxx
2019-09-03 18:53:33 +02:00
Max Kellermann
0fd6235a66
playlist/Registry: add FindPlaylistPluginBySuffix()
2019-09-02 20:28:14 +02:00
Max Kellermann
4d11745156
playlist/Plugin: add SupportsSuffix(), SupportsMimeType()
2019-09-02 20:19:47 +02:00
Max Kellermann
2038620bc4
db/simple/Directory: add method IsReallyAFile()
2019-09-02 20:15:52 +02:00
Max Kellermann
5dc7cb87bb
db/simple/DirectorySave: use StringIsEqual()
2019-09-02 20:10:26 +02:00
Max Kellermann
f885e068c8
playlist/Plugin: add constructors
2019-09-01 15:01:58 +02:00
Max Kellermann
0d16772dea
playlist/Plugin: rename with CamelCase
2019-09-01 14:58:49 +02:00
Max Kellermann
2376527d1f
db/DatabaseSong: add noexcept
2019-09-01 14:56:27 +02:00
Max Kellermann
7f043367ed
db/UniqueTags: add API documentation
2019-09-01 14:55:25 +02:00
Max Kellermann
45403b44de
db/update/ExcludeList: add noexcept
2019-09-01 14:02:34 +02:00
Max Kellermann
32f865f146
db/update/InotifySource: add noexcept
2019-09-01 13:58:45 +02:00
Max Kellermann
9f92b59376
db/update/InotifyQueue: add noexcept
2019-09-01 13:58:22 +02:00
Max Kellermann
2bb5030f70
db/update/Queue: add noexcept
2019-09-01 13:55:17 +02:00
Max Kellermann
366de8773c
db/update/Service: add noexcept
2019-09-01 13:51:34 +02:00
Max Kellermann
d3cc54d4eb
TagArchive, db/update/Service: catch all exceptions
2019-09-01 12:57:24 +02:00
Max Kellermann
71ef0faa2c
output/Source: move code to DropCurrentChunk()
2019-08-27 19:07:52 +02:00
Max Kellermann
328a6de86e
output/Source: document "pending_tag" ownership
2019-08-27 19:07:52 +02:00
Max Kellermann
4c7154bd23
filter/Observer: add noexcept
2019-08-26 21:04:35 +02:00
Max Kellermann
4f5c3b349d
filter/Filter: document that Flush() can throw
2019-08-26 21:03:25 +02:00
Max Kellermann
4fabfdabde
filter/Filter: allow throwing any exception
2019-08-26 21:01:22 +02:00
Max Kellermann
2e9b5e4e78
filter/Registry: rename the source file
2019-08-26 20:54:52 +02:00
Max Kellermann
115dd2b5ce
lib/curl: require CURL 7.33, remove bug workaround
2019-08-26 20:43:39 +02:00
Max Kellermann
b18003ddfd
lib/curl/Global: add missing include
2019-08-26 20:40:26 +02:00
Max Kellermann
6ec335dcd5
net/UniqueSocketDescriptor: import std::swap()
2019-08-26 20:37:47 +02:00
Max Kellermann
d5d6746ddf
net/UniqueSocketDescriptor: update copyright year
2019-08-26 20:37:31 +02:00
Max Kellermann
00d7759cee
net/SocketDescriptor: expose CheckDuplicate()
2019-08-26 20:36:51 +02:00
Max Kellermann
2ecc4e3eed
net/AllocatedSocketAddress: remove config.h, we have Features.hxx already
2019-08-26 20:28:53 +02:00
Max Kellermann
7d98145ea8
net/AddressInfo: include Features.hxx instead of config.h
2019-08-26 20:26:40 +02:00
Max Kellermann
e7c5a59e39
util/Exception: support "const char *"
2019-08-26 20:24:22 +02:00
Max Kellermann
c9081a206a
client/New: fix assertion failure in Close()
...
Caused by a revert accident in commit
f2cdbeace6
Closes https://github.com/MusicPlayerDaemon/MPD/issues/631
2019-08-22 14:43:53 +02:00
Max Kellermann
818b7e0641
output/solaris: include sys/stropts.h only on Solaris
...
This header had been available for a long time on Linux, but was
removed in glibc 2.30. This commit moves the `#include` line inside
the `#ifdef __sun` block and adds a fake declaration of `I_FLUSH` for
the Linux build.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/630
2019-08-22 11:41:12 +02:00
Max Kellermann
f2cdbeace6
Revert "Client: eliminate SetExpired(), call Close() directly"
...
This reverts commit 58d7804d66
. It
caused a use-after-free bug when Client::OnSocketError() was called
due to a failed write, e.g. if the output buffer was full.
2019-08-22 09:52:19 +02:00
Max Kellermann
e6600b8562
release v0.21.14
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1dBToQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEhlID/4gcrbaegKpTkftGPLBGlSUc4W0qwSHbdiJ
SuzK7sraSGUlLHHiBfqvFfE8tyEaLfsJarqiOdGgfiaW5QyapdwuU5s76nAN6jjY
onEo2QK6vSbv4J/B1+Jv+NGCgVM3ZkPy91GhfTz8MEtJMaBmztFhnpxK60r9jYPG
5EBsnVa6HhI7gniQAtOwE8SXYnn92Q4j72S8OuAbJ7Vwh0oqdIyXECqzcAE97Fk2
TNX/YSLST3I7Chv2OBDb3vOegh9nFUyr0qeSYdi8vk2BBYcgX2xYOOBQCC3ta/nr
NNeuSJOLgcF1XrFqVRRhDKZ8Y2inD6qVAXOH5WtChT1n3uXqYW7vdq0fW+/w3W/E
vouzgt5KvU5Me4Mk2M2dMjEWW+7Y8EUjvrwDnbDIkyP+Yi+BLTmTnyBgAW3cvRO9
UoCcWTBOEgyX2wAFl3r+NMPEneuMLbMCZUMju4/zveiRJdFExA0LC8wk0/iWqQbW
+WD8y6RTo7Z1jsP1vnBimgAkzkLAOuMlKLYNI15ETrxwKWgOjN6a7Q61GVdsaiqG
fKQeO0kZWWFcJ7HECgp3tpwWEi1+7/uqt0TwQgOKDdZHYL0Wb6Ur09KJS4b+eKIl
UzYwCrPgUx1pcYR+rTbMxCNpWn2kA+vp2UaPBN60c/J98d+6C/2nKtIvXfr5MrUA
CEb1epw/ew==
=mEFF
-----END PGP SIGNATURE-----
Merge tag 'v0.21.14'
release v0.21.14
2019-08-21 10:52:49 +02:00
Max Kellermann
b968e1b6de
output/Thread: add missing return
in exception handler
2019-08-21 10:20:17 +02:00
Max Kellermann
6c9f9c136b
command/all: don't create new Response instance in exception handler
...
The new Response instance in the `catch` block didn't have the
`command` attribute set, so the error response didn't indicate which
command had failed, which however is required in the MPD protocol.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/628
2019-08-20 20:31:36 +02:00
Max Kellermann
9bff5f9e36
client/Process, command/all: add noexcept
...
Clarify that those can't throw, preparing for the next commit.
2019-08-20 20:28:15 +02:00
Max Kellermann
2bf26a2ff8
command/all: remove obsolete prototype
2019-08-20 20:28:10 +02:00
Max Kellermann
e33b50d9c5
command/all: simplify return
from command_process()
2019-08-20 20:26:07 +02:00
Max Kellermann
21fa44c0d5
command/all: catch all exceptions
2019-08-20 20:23:54 +02:00
Max Kellermann
44444e1b89
decoder/Thread: on late SEEK, start decoder at seek position
...
Previously, a bogus value (whatever happened to be still in
`start_time`) was used.
2019-08-20 20:15:08 +02:00
Max Kellermann
ca450663d0
decoder/Control: work around crash after SEEK was too late
...
See code comment.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/629
2019-08-20 20:01:53 +02:00
Max Kellermann
04e2d08417
decoder/Control: inline WaitForDecoder()
2019-08-20 19:33:15 +02:00
Max Kellermann
af4ffa91fd
decoder/Control: remove attribute client_is_waiting
...
This optimization is useless because sane pthread_cond_signal()
implementations check the number of waiters and do not invoke a system
call if there are none.
2019-08-20 19:23:44 +02:00
Max Kellermann
f3ed2c0a82
time/ISO8601: support omitting seconds
2019-08-19 22:44:41 +02:00
Max Kellermann
2c35ea92bd
time/ISO8601: support time zone offset
2019-08-19 22:44:28 +02:00
Max Kellermann
26e0e1d25a
time/ISO8601: allow omitting the "Z" suffix
...
And allow "Z" suffix after date.
2019-08-19 22:42:39 +02:00
Max Kellermann
6412efb6e4
time/ISO8601: allow omitting the time of day
2019-08-19 22:42:06 +02:00
Max Kellermann
1a08bdf16f
time/ISO8601: ParseISO8601() returns precision
2019-08-19 22:41:49 +02:00
Max Kellermann
48b122f2ed
time/ISO8601: implement with strptime(), without ParseTimePoint()
...
Prepare for adding more flexible parsing.
2019-08-19 22:26:43 +02:00
Max Kellermann
06dac4783f
time/Convert: fallback TimeGm() implementation
...
Move code from Parser.cxx.
2019-08-19 22:22:07 +02:00
Max Kellermann
fdaadc19cb
time/Parser: use TimeGm()
2019-08-19 22:21:22 +02:00
Max Kellermann
2e53e9248a
time/Parser: explicitly initialize struct tm before strptime()
...
This is recommended by the strptime() manpage, because strptime() does
not initialize/set attributes which were not specified in the format
string.
2019-08-19 22:09:38 +02:00
Max Kellermann
b7abd5691c
lib/curl/Global: use auto
2019-08-19 22:00:25 +02:00
Max Kellermann
7a0957d713
lib/curl/Global: document ToRequest()
2019-08-19 22:00:06 +02:00
Max Kellermann
2934fc2507
lib/curl/Global: remove CURL* parameter from Add() and Remove()
2019-08-19 21:53:19 +02:00
Max Kellermann
0c8ff56a15
lib/curl/Easy: add constructor with URL parameter
2019-08-19 21:48:07 +02:00
Max Kellermann
07be44a50a
lib/curl/Easy: add getter functions
2019-08-19 21:47:11 +02:00
Max Kellermann
7a473729af
lib/curl/Easy: add method Unpause()
2019-08-19 21:46:21 +02:00
Max Kellermann
402f429b17
lib/curl/Easy: add setter functions
2019-08-19 21:38:55 +02:00
Max Kellermann
4c46ca6b59
lib/curl/Global: make ReadInfo() private
2019-08-19 21:38:09 +02:00
Max Kellermann
76a0bf68c7
lib/curl/Global: remove redundant API docs
2019-08-19 21:38:03 +02:00
Max Kellermann
9f02beaba9
lib/curl: fix coding style
2019-08-19 21:37:47 +02:00
Max Kellermann
a478af6759
util/PrintException, ...: update copyright
2019-08-19 19:11:59 +02:00