Commit f6e428ac authored by Max Kellermann's avatar Max Kellermann

Merge branch 'v0.20.x'

parents 45fbafae 7b7fb5ac
...@@ -7,6 +7,10 @@ ver 0.21 (not yet released) ...@@ -7,6 +7,10 @@ ver 0.21 (not yet released)
* output * output
- alsa: non-blocking mode - alsa: non-blocking mode
ver 0.20.7 (not yet released)
* database
- simple: fix false positive directory loop detection with NFS
ver 0.20.6 (2017/03/10) ver 0.20.6 (2017/03/10)
* input * input
- curl: fix headers after HTTP redirect to Shoutcast server - curl: fix headers after HTTP redirect to Shoutcast server
......
...@@ -4080,7 +4080,7 @@ run</programlisting> ...@@ -4080,7 +4080,7 @@ run</programlisting>
(logical "and") can be used to select portions of (logical "and") can be used to select portions of
the format string depending on the existing tag the format string depending on the existing tag
values. Example: values. Example:
<parameter>~/.mpd/recorder/[%title|%name%].ogg</parameter> <parameter>~/.mpd/recorder/[%title%|%name%].ogg</parameter>
(use the "name" tag if no title exists) (use the "name" tag if no title exists)
</para> </para>
</entry> </entry>
......
...@@ -36,8 +36,8 @@ flac = AutotoolsProject( ...@@ -36,8 +36,8 @@ flac = AutotoolsProject(
) )
zlib = ZlibProject( zlib = ZlibProject(
'http://zlib.net/zlib-1.2.8.tar.xz', 'http://zlib.net/zlib-1.2.11.tar.xz',
'28f1205d8dd2001f26fec1e8c2cebe37', '4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066',
'lib/libz.a', 'lib/libz.a',
) )
......
...@@ -86,7 +86,7 @@ struct Directory { ...@@ -86,7 +86,7 @@ struct Directory {
Directory *const parent; Directory *const parent;
time_t mtime = 0; time_t mtime = 0;
unsigned inode = 0, device = 0; uint64_t inode = 0, device = 0;
const std::string path; const std::string path;
......
...@@ -43,7 +43,8 @@ FillBuffer(DecoderClient &client, InputStream &is, B &buffer) ...@@ -43,7 +43,8 @@ FillBuffer(DecoderClient &client, InputStream &is, B &buffer)
{ {
buffer.Shift(); buffer.Shift();
auto w = buffer.Write(); auto w = buffer.Write();
assert(!w.IsEmpty()); if (w.IsEmpty())
return true;
size_t nbytes = decoder_read(client, is, w.data, w.size); size_t nbytes = decoder_read(client, is, w.data, w.size);
if (nbytes == 0 && is.LockIsEOF()) if (nbytes == 0 && is.LockIsEOF())
......
...@@ -287,8 +287,6 @@ roar_tag_convert(TagType type, bool *is_uuid) ...@@ -287,8 +287,6 @@ roar_tag_convert(TagType type, bool *is_uuid)
case TAG_MUSICBRAINZ_ALBUMID: case TAG_MUSICBRAINZ_ALBUMID:
case TAG_MUSICBRAINZ_ALBUMARTISTID: case TAG_MUSICBRAINZ_ALBUMARTISTID:
case TAG_MUSICBRAINZ_TRACKID: case TAG_MUSICBRAINZ_TRACKID:
*is_uuid = true;
return "HASH";
case TAG_MUSICBRAINZ_RELEASETRACKID: case TAG_MUSICBRAINZ_RELEASETRACKID:
*is_uuid = true; *is_uuid = true;
return "HASH"; return "HASH";
......
...@@ -50,7 +50,7 @@ struct StorageFileInfo { ...@@ -50,7 +50,7 @@ struct StorageFileInfo {
* Device id and inode number. 0 means unknown / not * Device id and inode number. 0 means unknown / not
* applicable. * applicable.
*/ */
unsigned device, inode; uint64_t device, inode;
StorageFileInfo() = default; StorageFileInfo() = default;
......
...@@ -45,7 +45,7 @@ public: ...@@ -45,7 +45,7 @@ public:
explicit ScopeExitGuard(F &&f):F(std::forward<F>(f)) {} explicit ScopeExitGuard(F &&f):F(std::forward<F>(f)) {}
ScopeExitGuard(ScopeExitGuard &&src) ScopeExitGuard(ScopeExitGuard &&src)
:F(std::move(src)) { :F(std::move(src)), enabled(src.enabled) {
src.enabled = false; src.enabled = false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment