Commit Graph

1087 Commits

Author SHA1 Message Date
Max Kellermann 676dfabc91 command/{Queue,File}Commands: drop "file:///" prefix for absolute paths
Requiring this prefix makes the client's intention very clear, but it
was too hard to understand why this prefix was needed.  Initially, my
intention was to differentiate from broken clients which prefix relate
URIs with a slash; once MPD allowed that.  In the past few years
however, MPD has disallowed that, and there was no significant
breakage (except for the "add /" special case which some clients
apparently still do).  So I figure it's about time to define that an
URI that begins with a slash points to an arbitrary file on the file
system.
2015-02-09 07:55:06 +01:00
Max Kellermann ff2b427cc1 release v0.19.9
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJU1OdDAAoJECNuiljG20USazsQAKZuhjJJ8vjYCB7G/NGoi9tv
 dImBQnQDiQTdE57kxa46loknbPc5/cSAYnLbR4PjQfMBqArtE6sAkAk72LKlYNqt
 qMOEKPCBjv8ZjiGDbvL/X+WSKbrpm8iOf3Gu5BRIuWrMK/oXQMe5A028Ziyye//X
 XfMKdPWkZFL6h/qGO082eCnCiTJaSRLwP6HSNF2pqv+JuFF7hyLkZvTVXo/ms85E
 ezrx3Kjf8TuNX041uuso7qqUsD/sY2jZRZ26qfzJ1ODwJmgIfbXzat+ODFVNne55
 E1nh5zpwIUxZ2+d6eJEzwLR3+FpmltPc1YLo2mnetD6f59SzpXjAycPLo1VoOhbQ
 s4iXQEzNI2LwDebI3eiMXQaLIorHOGex3L6JYkO5LAqUkPrv/PBCJFJs8ixjCRbl
 KL27WmWYiV0xfdCz4TtAxEt48LGMMjDfaSK4Hzo3vN3vZtIEy2p/pS9MhXDdxC8I
 vql533N+A9fi2I+7bPauwX5ElOYvGTkDeKqKXDox/jR0zio55APst7IW9OIUCKxo
 an98430jeNPhs1CNqxVIJNciC8Q4REmafki7UQiKYDBQjHyq3r6Bp547lnDhUtii
 P9PNTyOoJXhV5yEP3upnWCxwH6Vy7IxBnwrEO7aEHs88Ea54iqlZ9XB8TzUw4G/1
 I7T7a8yOopRopb04vhr2
 =fd8f
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.9'
2015-02-06 17:15:31 +01:00
Max Kellermann 5761800197 release v0.19.9 2015-02-06 17:08:25 +01:00
Max Kellermann 0eebacc521 release v0.18.23
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABCAAGBQJU1OZDAAoJECNuiljG20USZeYQAJQ6S63jPBlfcUs+08d3Qe22
 tlVYcBrH4zJiMqcgzzcCjslDTTWJNri5nO5Ryisklav2luvN+arvQIK/1XcIgjEH
 vNLfqPv7LGg1cfIXYDn5yd7j+WQxytZ+fAXL9lGY+fQptRsybPAPP3WCvdXguoir
 HWIHID3C2ndP58DmxYaRi+ewnpDdJgl051tqGVVTFkFBVpUVz+oaPlxJVO7Nj1tF
 qSWXASWSJGvxJyaGs6aOxNuD0qpoFubnb+esfukTdjOFCcHl6X1CNn7GcoOGRvES
 areN9/HlxZSogtv9eoSiwERwraNKKHpPR/8BaBDAT0phUH6ZqS1O69ZIZYQrKyPw
 uls4XdEZBItIUn2Vl/zGyyUGMSNoVwbt0CpDPjJqtzPMBG5tQC2dEGyBAT2+uwAM
 SAneXyYjW+kop4L8QfBav0eWvmXOEOqxCcRYDygvjil/lD/Pg2LhhznHieMhYTQv
 7VmptpHrj41Ea0Mda83lIcBobUGwOxzV63WvHL5gXnPMcNG7yrLZno4ITQUXALxy
 66ApaW52SmO1SFhP4NNNqxqlzoesSkVtwMfVY+CwRzX4LINTq8wLTdvTSrN9Xy38
 XzwxgihtPT5fT73jQGnUyNjCRt7FlkCIO4KJ5UZNg03IwlVvXtD16GHsRmU7DOHP
 lnt8vrRVShy32UCa0IxM
 =wfFE
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.23' into v0.19.x
2015-02-06 17:07:47 +01:00
Max Kellermann 4a5528697d release v0.18.23 2015-02-06 17:04:14 +01:00
Max Kellermann d38034bb5c fs/io/FileOutputStream: don't auto-delete file on WIN32
The file handle is never reset to INVALID_HANDLE_VALUE, and thus the
destructor will assume the operation shall be cancelled and will
delete the temporary file.

This was a major breakage for saving the database file and the state
file.
2015-02-06 14:36:55 +01:00
Max Kellermann b3fe3e8b3d TagBuilder: allow adding duplicate tag types in Complement()
Build a table of pre-existing tag types before adding new items.  The
old way would check HasType() each time, which would return true after
the first instance of that tag type had been added, preventing
duplicate tag types to be merged.

This broke duplicate tag types loaded from the state file, because
this code path uses TagBuilder::Complement().
2015-02-06 12:25:34 +01:00
Max Kellermann 5489dec28d NEWS: fix v0.18.22 release date 2015-02-01 12:22:24 +01:00
Max Kellermann 8a6b4db19f Makefile.am: move org_musicpd_Bridge.h to BUILT_SOURCES 2015-01-31 00:05:30 +01:00
Max Kellermann 557bee61d5 Merge branch 'v0.19.x' 2015-01-29 22:55:18 +01:00
PHO 39abd3ecb4 Avoid integer overflow in MonotonicClock{S,MS,US}
This is Darwin specific: the previous implementation was causing an integer
overflow when base.numer is very large. On PPC Darwin, the timebase info is 1000000000/33330116 and this is too large for integer arithmetic.
2015-01-29 08:34:37 +01:00
PHO a4f4fc50b9 Avoid integer overflow in MonotonicClock{S,MS,US}
This is Darwin specific: the previous implementation was causing an integer
overflow when base.numer is very large. On PPC Darwin, the timebase info is 1000000000/33330116 and this is too large for integer arithmetic.
2015-01-29 08:33:48 +01:00
Max Kellermann 8b5f47d3a3 decoder/DsdLib: raise ID3 tag limit to 1 MB
A bug report was submitted with a 600 kB ID3 tag that could not be
read by MPD.
2015-01-29 08:20:14 +01:00
Max Kellermann ae7e1a22cb Merge branch 'v0.19.x' 2015-01-26 20:57:29 +01:00
Max Kellermann a289dcb9ee Merge branch 'v0.18.x' into v0.19.x 2015-01-26 20:48:19 +01:00
PHO 023b9c1e7e Test the existence of strndup(3) before using it.
This can eliminate the ad-hoc "#ifdef WIN32" and can also support other platforms lacking it as well (including Darwin 9).
2015-01-26 20:39:49 +01:00
Max Kellermann ad1b6ef0ac {playlist,input}/despotify: remove defunct plugin 2015-01-26 09:55:31 +01:00
Max Kellermann 30cb082932 ClientProcess: cast enum to int before passing to printf()
Fixes gcc5 warning.
2015-01-23 16:50:31 +01:00
Max Kellermann 645554d12f configure.ac: prepare for 0.18.23 2015-01-23 16:47:13 +01:00
Max Kellermann 6cd5d73607 pcm/SoxrResampler: allow multi-threaded resampling 2015-01-22 11:37:18 +01:00
Max Kellermann 0d3b26b3aa Config: add section "resampler" 2015-01-22 11:04:28 +01:00
Max Kellermann 276a0d9500 thread/Name: include stdio.h if HAVE_PRCTL
Caused a build failure with uClibc because snprintf() was not
available.
2015-01-21 20:40:56 +01:00
Max Kellermann a2af158fd3 configure.ac: prepare for 0.19.9 2015-01-16 17:26:50 +01:00
Joshua Wise 1d8544ef3b db/plugins/ProxyDatabasePlugin: add "keepalive" parameter 2015-01-15 14:44:55 -08:00
Max Kellermann 2b1194d574 release v0.19.8
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUtuniAAoJECNuiljG20USpxsQAI9cF01QXFnYMyIm77nqwm+C
 AsDc5NvPq8YdVPfoSY5Zld/H2IJiNWe2iV7fcMD+u/pEHJU7M4LPf66UZz0XwxMG
 h685yBD/UX3Bk5J/qHP+RiMhPo2Eo5wwxhzZ0bWhQAPOiZs0w1TIuJuA4ckxR0VO
 V5472IPkG2LWU29Aoq/wlCdJPvdERCbFhRLZUzjfAMZw+/yTo9wRFuiy0w/yoUUp
 ePF4LNLFDw97Nx03rHAwqz3lHLtnyMuyYFR6dgzuIlf92k8axp40pwnRZV6egNhg
 5YEAUHQxw8wVhm+bWtgD5ZMtQk/zRiw7TwNMN0BlpMZ/8b4fF9r1/MuboKgY5WBi
 oNprCzu9h8p0PXLRvB4hUc8x5MWD0QNTEYlW3fiib5vDmJrnHBc04Y9PJ4eAKH8E
 J/fPAzPf2i2gtW5AqZ+RRI1YuugURrOlpmF2pp5YuHXJWKP930QoUfREs+gkaSU/
 +I68U42zf/05t5BpuZ+OWcVNc0IABE/maqoBAxbg9sOWpxCmPJa3LYjlc1upR0Ng
 TH+9yr6Np2dRz99qSAG3vU0jEfVwqelPveNapPxCsxBYl7GBQQyFd/qcQkrhMs/S
 2SLud9ZMKHCsneicHZ4xTTP8Xzn65yHtSsxni6Lc6hCA4m7RPeiWW8RWef7MnCo8
 Sz4SRBtBy/ZkuNddtU/+
 =8rde
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.8'
2015-01-14 23:22:42 +01:00
Max Kellermann f33d2fb2e7 release v0.19.8 2015-01-14 23:12:24 +01:00
Max Kellermann a9eec35aff release v0.18.22
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUtuh4AAoJECNuiljG20USnqIP/2PzYYBJp0GsQewDervdJYWn
 5/6npW960l92aofvUxCJXKdNtOgfvioHZNa3y3dv/ENTNN29aS1W0DiBfqVYUzWH
 gm47zWXT+OYGMaxp0lvb+XCnB8DxOaY4SPTq8BdlcX3ux7Do9QmANapG0cU3IIlv
 rM9EORXTCOiWJhygzXg7lq6bDOZ3DBR1HCuQ2L5OJ9seHJl5S/whcxlZwjiQGP+k
 KnxatYDGIIGX5nogZ35bTXgIQ9JhYVQbPkawQtXXsGfEN1WZ1VMC5JvI8MY/9Eey
 nFx9iv/jReDFtUQgEfjaZEQa7FspIjphkSDI1JHEtzA8aChD706VFMZdzrJztCGz
 X15b6j/UVmaDBvMHYKVjyfSs73BI8kVAnV3reN5pcWNHFgxR8j8fsAUOuNecI17x
 xbI7vgkLxm/oP/XRBrYeYKexvlo8hKcOrFauaaBrf68aor/qgFXi6Z1OCbiPXm7s
 cHZK9Y8qzdhhFt7w479lslGWPgNCSkPP/7WpNOAE9/4X85lxhNgIS4/Oujb5JMqa
 IAHEHpltCWCguxrITFRJ6AcEovm8i9DOqk6PylU+9lao+j31dWFmX7w6u8qS2/Pi
 Dj4r2TqD5odN6/7Ky0SKpixXlTWODGcRaf9aGfU+DoW9HGGvIL/BfTB5gDB039Wa
 +PtpFL6PbGUWTirGSGoQ
 =Ro6Y
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.22' into v0.19.x
2015-01-14 23:12:08 +01:00
Max Kellermann 8534f2d1e2 release v0.18.22 2015-01-14 23:04:49 +01:00
Max Kellermann e8debd2e45 output/recorder: dynamic file name 2015-01-14 22:03:26 +01:00
Max Kellermann 8b217d5313 fs/io/FileOutputStream: use O_TMPFILE if available
The Linux feature allows writing new files to an invisible file, and
then replace the old file.  This preserves the old file if we get
interrupted by some event.
2015-01-06 19:38:55 +01:00
Max Kellermann 674d14879f Merge branch 'v0.19.x' 2015-01-06 12:54:46 +01:00
Max Kellermann 37e9010887 input/async: reset the "open" flag after seeking successfully
Fixes a problem with the "curl" input plugin: IsEOF() always returns
true because the "open" flag was cleared by
CurlInputStream::RequestDone() when end-of-stream was reached.  This
flag stays false even when seeking to another position has succeeded.

This patch resets the "open" flag to true after seeking successfully.
2015-01-06 12:46:28 +01:00
Max Kellermann 4bd2c75056 thread/Name: disable pthread_setname_np() on NetBSD
NetBSD's pthread_setname_np() prototype is incompatible with the rest
of the world, and it requires to pass the string argument as a
non-const pointer.  Instead of working around this misdesign, I hereby
disable the feature on NetBSD.
2015-01-06 12:08:36 +01:00
Max Kellermann b3435ae432 output/recorder: implement send_tag() 2014-12-26 15:03:22 +01:00
Max Kellermann 412bedb697 Merge branch 'v0.19.x' 2014-12-26 14:40:32 +01:00
Max Kellermann 940cab8620 Merge branch 'v0.18.x' into v0.19.x 2014-12-26 14:28:52 +01:00
Max Kellermann 53f4044890 util/{ASCII,UriUtil}, ...: work around -Wtautological-pointer-compare
New in clang 3.6.
2014-12-26 13:43:32 +01:00
Max Kellermann 805caa30ce configure.ac: prepare for 0.18.22 2014-12-26 13:23:04 +01:00
Max Kellermann c4c2da06b7 output/jack: use jack_ringbuffer_get_write_vector()
Reduce number of libjack calls.
2014-12-24 23:14:15 +01:00
Max Kellermann a56949e9fa decoder/ffmpeg: support interleaved floating point 2014-12-23 20:51:08 +01:00
Max Kellermann ea96919b80 Merge branch 'v0.19.x' 2014-12-23 20:43:15 +01:00
Max Kellermann 43da4c0eca input/mms: limit the mmsx_read() size 2014-12-23 20:34:45 +01:00
Jan Brittenson 35db88affe DSF ID3 tags hitting 4k size limit
Here's a change to dynamically allocate the DSD ID3 tag buffer.
Pretty much anything with cover art is going to exceed the existing,
static 4k limit...  Here's a change to dynamically allocate the buffer
and sanity check it at some upper limit.  I rather arbitrarily pulled
256k out of thin air just to keep a corrupt file from causing it to
trying to allocate a buffer larger than available memory.
2014-12-23 09:49:33 +01:00
Max Kellermann e38faca455 configure.ac: prepare for 0.19.8 2014-12-23 09:48:31 +01:00
Max Kellermann 8400da9934 release v0.19.7
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUkcmtAAoJECNuiljG20USLuwP/3MjssxpUkq6aN1beyNACWJ8
 Zgr/ibDjxYJY+UAHUOycnJQ8WNpgfXNSR4F5jQHznJdpemJCZCeBd2s5yelEdu0C
 SBjJ9FiKPeu8or5N34CPmRQDmDGHv0II4/ySmzlBhH4XRV5JF5li/j4KtAlOCqCT
 GNnlmgn05o+oX4Olpg/id6H7wvny+YDY3p33sJmi+djBnSbJyJNvk9NhAr9n4I7Q
 FfGHbTzRLSZKHa47zzXag30PBj2X8x7NOAcAX7/evQpw9Gud/8CwXKk21kp6L/fv
 RJnj4lLtkj8MRc+8vskZ9EXgYr3yC/cldP8Fw8qsY/t7d8UFUN8qFqpq9O8IPnga
 D4hNpq7VF9ZxMhQtxBiT3cRvjTXBp8J/B7p2YDuYHBhIZh8IPzjDCyF4CzlN/470
 3zTqq/aar93AeI/6MQlpQPBK1DGvrrHBVP3Mj7cCTbx61P7/1xEIxYntRIfJw449
 JRJDJKjdyOY4+Sqm3Agu3WiQlyOzZXmqM3E3FFeul4mUvcOKhfbZxjayYsGlfigA
 MHge1wif2aOe6IU334DUD5V0m61MMoefznEvWUdAZHtdvQox0ovDmwwFRizX2fGc
 rlUhoUOXWjjGbTI2VjXsBklzh8P+MxQ8OiJGw+V4DBI0XL+A2tpqISs9mpCVPwQ0
 T37uc6kdDB99noMuD2cw
 =+4Cz
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.7'
2014-12-17 19:27:59 +01:00
Max Kellermann 6d89020f80 release v0.19.7 2014-12-17 19:20:54 +01:00
Max Kellermann 9c56c49e73 release v0.18.21
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUkcgMAAoJECNuiljG20UShwAP/3qGPv1feFJMOQbhHF+K8eL9
 4oeKJAblVR98+jsdu8Z7GidGGXrvIX8pxGWJPLLYSa2naR9/gtTxpiYZPEd2ex4G
 1jbFzI0GmU08I5x9sUPstX4GoDVfWnV3ICYzY7z1VVhlxYXlI+dHOPz61FxaLWYM
 i/H4WR7lvSwyOsYaFtfqZC9SD71XQ0V56yDqaDK6a/NbMg0WQQMghmH0swkEk/FK
 wN6nxEpFpTtOjBLjF51TyNC5JT1lxXDYwxYmrtd6rxkNqhN8duCRXq9IK7MEGync
 LNtHKGMrcXwLBSAPM6GTrY0StCch6fEBhOg0Tr7JQ81BSb/1XKzimbxCCULDwx/P
 /hN4lGr66tudXHFaRQX0GLxRpkpKtanp7+xtZ5AhGh4Wk7YQ62nb8RN3qCc5x2Oi
 cvnK6bewMi7rZoIejAhaXtbKNPho/H5TpE404C+ScnWyEAVtly45xgECNdzllhfk
 k4Kp4rW2CNmHTNbZRFh1Qre2g47a9rhZxoxXx4X0fi6YSruekQC3qjdloom5VN2I
 8d7NloQoJ+wjkYXuZ3EoxdBhbdViZBMg8CP99KFc7sYQTGmYtrKyjZ5EiOAVw3p5
 rHoTrGdZr8aKPMcKQPo4GaTkB9njE4a4l+uVq5SOiRSfpDeRqvhIqOrUz4EOf8Ic
 ryT0jwFGfKhSHG4tz+9K
 =WjqC
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.21' into v0.19.x
2014-12-17 19:19:13 +01:00
Max Kellermann acb798e544 release v0.18.21 2014-12-17 19:13:47 +01:00
k44 773de38bd9 playlist/embcue: fix filename suffix detection
The definition of the playlist_plugin struct member of the embcue
plugin was incorrect.
2014-12-16 18:43:05 +01:00
Max Kellermann adfc5db3d2 Merge branch 'v0.19.x' 2014-12-15 00:46:56 +01:00
Max Kellermann a48704925d storage/nfs: add timeout 2014-12-15 00:45:13 +01:00
Max Kellermann fa4beeee75 decoder/ffmpeg: detect and fix negative time stamps
Works around assertion failure due to something that appears to be a
(minor) FFmpeg bug.
2014-12-15 00:40:46 +01:00
Max Kellermann d8351772d3 configure.ac: prepare for 0.18.21 2014-12-15 00:39:52 +01:00
Max Kellermann 82da364b8b lib/nfs/Connection: implement mount timeout 2014-12-15 00:05:53 +01:00
Max Kellermann 02563a35f0 lib/nfs/Connection: fix reconnect after mount failure
When mounting had not yet finished, SocketMonitor::IsDefined() was
always false, due to the workaround at the beginning of the function
that calls SocketMonitor::Steal().  This commit drops the IsDefined()
check because it was never necessary and breaks reconnect.
2014-12-14 22:49:16 +01:00
Max Kellermann a543627abd lib/nfs/Connection: fix memory leak (and assertion failure)
nfs_destroy_context() will invoke all pending callbacks with
err==-EINTR.  In CancellableCallback::Callback(), this will invoke
NfsConnection::DeferClose(), which however is only designed to be
called from nfs_service().  In non-debug mode, this will leak memory
because nfs_close_async() is never called.

Workaround: before nfs_destroy_context(), invoke nfs_close_async() on
all pending file handles.
2014-12-14 16:02:47 +01:00
Max Kellermann 4b8d258cff lib/nfs/Connection: fix crash while canceling a failing Open()
The method NfsConnection::CancellableCallback::Callback() will always
invoke NfsConnection::Close() on the file handle, even if the void
pointer is not a nfsfh.  This can happen if the Open() was not
successful, e.g. when the file does not exist.
2014-12-14 15:16:01 +01:00
Max Kellermann cc143105b8 sticker/Match: add operator "EQUALS"
Mapped to "=" in the MPD protocol.  This is the first operator,
initially supporting value matches in the MPD protocol.
2014-12-12 22:16:00 +01:00
Rasmus Steinke 7d9aa5b716 vorbiscomments: Remove support for non-standard "album artist" tags.
MPD used both "album artist" and "albumartist" tags and mapped them to one tag.
This could lead to issues, if a file had both tags, causing MPD to send
a list of albumartists instead of a single one.
Since "album artist" is not a standard tag anyway and even its originators
started to use the proper alternative, its time to say goodbye!
2014-12-12 18:28:11 +01:00
Max Kellermann 2fec463542 util/HugeAllocator: disable MEM_LARGE_PAGES on Windows
MEM_LARGE_PAGES does not appear to work.  Instead, MEM_RESERVE appears
to be necessary.  Until I figure this out, this large pages are
disabled.
2014-12-12 13:20:58 +01:00
Max Kellermann 4741d7bfe2 Merge branch 'v0.19.x' 2014-12-12 13:14:29 +01:00
Max Kellermann 673336297d decoder/ffmpeg: support stream tags 2014-12-11 10:52:40 +01:00
Max Kellermann 310ab7d41b NEWS: mention ffmpeg/MixRamp 2014-12-10 14:01:12 +01:00
Max Kellermann fc1796f3e8 decoder/ffmpeg: support ReplayGain and MixRamp 2014-12-10 13:45:29 +01:00
Max Kellermann d62a738460 Merge branch 'v0.19.x' 2014-12-09 14:04:11 +01:00
Max Kellermann 0cfd4fff62 playlist/Print: don't skip non-existent songs in "listplaylist"
Skipping those songs silently will confuse the client, because
commands specifying the song index within a playlist
(e.g. playlistdelete) will be out of sync.

This copies spl_print()'s behavior to playlist_file_print().
2014-12-09 13:36:48 +01:00
Max Kellermann 8904127c10 configure.ac: prepare for 0.19.7 2014-12-09 13:09:03 +01:00
Max Kellermann de43bddc1a release v0.19.6
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUhbH6AAoJECNuiljG20USe/4QAJdMAjnggHbcC/JO9pdJ/5B1
 vK+wJqqpNkTpjRaI1OGmxWJCUYKFLCDhoSoPjkyxZ7qmvEDdhQo105/iSod1DOb7
 4wAbtrCCfkHKwNZHI2Zf713urBTkT4AZNkSmqBnFRF+sJbiKlQ4Y1EXYG/cwsu63
 8RZx3mOURi52OCYuhzurZ2UDqLj0xJ4bFxRiqHV0LLeOAyGa7P6O2M4WwjNsDB9e
 9o2ckwis3Yl+0E8FYW57WkFiSkZ40xgNa6O6gOWOYsjpey45IQrxhB5ewy/svIwZ
 jeVVnd12mkFAXG3ZBQjwAe+/H8yG5NdqhL7llznuYaX6Ii9zeAPgccK/rZ+kYKe8
 gg126KqI9lvUFV45tfoxVqUFiJu5zB0etSto/hNsIdt6ngnuU86WJ3c/X0tDxhN/
 GoIKRQxPkJ5XjNdBuRx3ELWx4Jj1UM7CHgQBaqnr0bwfWfFa0IinBwnPw0HqYyBn
 p9HZqeVrD3/JDFxungZlWaDk52iScs4Jc4ovGP8UKQVfdkS66awxcWn1gXroXla6
 UOslSkB/Gu7WluGzgCkmvD43PY/8oZlOeiP3xmsDgoq5Dg+z4GAw3NCn7/i8Mt5I
 HTjNBhLhLLoTjFmcD9MwQtV5/E1UnY1VHTpoZa8dXueyxPgMFmh14BazY+bPnfpw
 lSNAo7p0Mh8MdWrRN2Vc
 =QvY3
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.6'
2014-12-08 15:22:44 +01:00
Max Kellermann c46f48abec release v0.19.6 2014-12-08 15:12:41 +01:00
Max Kellermann 4acbf7b90d android/build.py: update FFmpeg to 2.5 2014-12-08 15:05:49 +01:00
Max Kellermann cbc1a58e93 release v0.18.20
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUha5vAAoJECNuiljG20USdLEP/0NCwdnvCPVdkZ7RwsdCRp53
 jv86eu92uFVQJrW5/NQahngOwqNRsjNRX1EiEalbEjqCzMxDjuKCBukdteXg0Q2A
 igwDDrDwpm9tvzilsTAdjEH3gRcuxDRWfF259bZXbnxksVMuwzo31YraU6dBUkSc
 qPpQtbS4Op0paFG0TieBAt07TZ8Wb4KkAM86vBu31JpXZkXGyT6B6N3qe4WtpAN8
 l5qAWstBRog5JM3Q99FNDnCFG/2n93CEZjwN8FlQgkFhyhhDKF5YOhZNQpqTEbh9
 nxdo5V3OC42cx92V1CxrzkPKhnBIrSTGLg+Yb9S+vF3nWX+cBPpalr/rw5xZTrdH
 3zER+hOHvkMZpEZDiyUx5bkF9Ay2BvJkdJCSFSTq9HmzksTnEJ+0r44cO2rwqOpx
 R6KZPLTmObjCjmnMM+kbd6e/T8WEkcEotuYoocf3lep45roGAYuHErWW3+B89+4Z
 f0Y8uwPQTWrOGSRKXh2liWcHeN114Uwvb0ZyO+/0Oe7v1Id/IW7zC2XfSpY58dok
 /yRXiElow1LVLISixBBUAnwkx0M+CyQJqCS/nQpedPArLos+g4Wo3R+QnQEnOu9C
 e1cRY3qa56lre6BnE+rQ3aMNVGgfjsU4t3mSjQlCp1PbU7izvlgMHJcyErt6d5aj
 nA8VwjS+1PCODS/HkCqc
 =APdC
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.20' into v0.19.x
2014-12-08 15:03:09 +01:00
Max Kellermann 1b5f33a435 release v0.18.20 2014-12-08 14:57:17 +01:00
Max Kellermann 41b4a63f2b decoder/ffmpeg: support FFmpeg 2.5
Version 2.5 fixed an API oddity, however it broke API compatibility,
at least with C++.  Disable the workaround when a libavformat version
is detected that is recent enough.
2014-12-08 14:25:34 +01:00
Max Kellermann d8fc2db910 thread/Id: drop "::" prefix before pthread function names
The "::" to explicitly refer to the global namespace appeared like a
good idea in C++, but it breaks with C libraries that implement
standard functions using macros (e.g. musl).
2014-12-08 14:17:17 +01:00
Max Kellermann dc11dea7cc configure.ac: prepare for 0.18.20 2014-12-08 14:13:20 +01:00
Max Kellermann d435dcdca4 configure.ac: make GLib optional by default
Only very few (minor) features still depend on GLib.
2014-12-05 00:21:48 +01:00
Max Kellermann 0debba0f6e mixer/null: new mixer plugin 2014-12-02 18:20:44 +01:00
Max Kellermann be492ed108 android: update libFLAC to 1.3.1
Due to security vulnerabilities.
2014-11-28 21:08:27 +01:00
Max Kellermann 03d2fb450f configure.ac: prepare for 0.19.6 2014-11-28 20:13:57 +01:00
Max Kellermann 737a56a030 release v0.19.5
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUdiYnAAoJECNuiljG20USDB4P/3RGHBV5XgdInmYKjGg89hex
 YRiy3BVvrBri53wkj+3YwOi05Cx0fp0pCuwQ9Nm7bmPCwfdC3ASF+UBlBBhnLdfc
 dlISXDHciuKDJwiTtTlBvaKCENoZhjAJQ1SOa5zceH7j/V/XbY0FauHCeE8Ek7ht
 KjimIt1ft0mdgsGNfyisdfbnh/3r4T9V9tBs/wnr7oDTYS/eUX8vCDr5qYIZipjx
 W6pug2m4nfDtHYtN5gv53WYCIm7MiXo9vh7hCjJHd3T3xqKwdWVuz5RRcZcgd9yT
 WWlzOKAI1cgmU7rZaV6Gu+tAq9g7MpNLOGoeN6mhH9E8V16rKqvCiLaXMK5wEGs9
 JWGsTBcbTnSCdG1iivJtP2kOGVHXvNthbSunzwmbowMATi6xIBm8AoqidSzCaW1F
 C7mss8VlhkHdCtHTvyK3XCE2wGEbx4OfsfsL3PWBonrs0DpNOR2AqWQYLsZUhbff
 RV7aeyphMVvgLP67cT9YnGswKGEPOqP2EO9Mh51AQ7wiUESZ+O5J9YHWCc0E3SML
 qs9A+lpA8fstj0QJewx/HNofiHXw5A2THjs/BVqs3vYkcHnTI94Nmdxps82r/rEA
 oy9d6nQqglkPJZF3JwHqJMj1VtBIhihaHBpnLeyegjtiajZV6mVNVg9ezt9EpEA6
 OjJFh2xzQJ7w5qL0gy2R
 =1kbY
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.5'
2014-11-26 20:19:17 +01:00
Max Kellermann 67cba251c8 release v0.19.5 2014-11-26 20:11:42 +01:00
Max Kellermann 27ce80544f release v0.18.19
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUdiMjAAoJECNuiljG20USjnMP/jQl/aIEiUwbwqq1F8+0wlFh
 lX5xix5+7QuvTH2Lw5brNSRdVRsHGGeDqVcSi1zY4tgNXK/EBmS1mDVKWQO5qJd9
 v+ueDRr7xI3HFECe0J7h2Q5GGD/YkeSyjB2k7C7I7t1axukLOXbP+qVyz6/d1azZ
 SkUKKmIUD4KdJuDWy34JYYiltGl94JNyTBvC+jJV4Mbg2qd7XV6MSvJipiK6aM05
 UsEza9bF/jG2aHL/xtR+dEnNLAoFoZ/h1RqUoYw4DLEKxfip+E3MD4sEx6Sg8XSv
 v2rZQrMhl2LvJkwCjo57KrJ4YmHK0U3zg3ElDefqRsW4J10x5d3hhOINJPpHUpyZ
 T5RvoDCJ5BL+6wg0tA57338pNydSBQDV5+WjI9+vD8ahnZlFgjY+OoJDxkxtFlYz
 pLazEQbkUWlU62ZGW/dVpwgYInalNH9ZTrvelwXtGmwMfLhp01S4DHX3ipFgmMGd
 do3x/FoVRyOnFWQPotga3+ZoARqmXhfQ70DqESoajBHeLTzYBs9vh+fw6y1iVeGb
 rIBEIyMPlyuPt+2NrLflo6o0VMYB8MV3nh3P3DX8Ywavae3+k4WPGx2w/MEM34lF
 sWUDXfZeCwJ5rrXeyP/s2C9ZmJ+Bm6WlxQ0gUZXMtrfDShPBY8gHzGi4m3ooslde
 OZCIokCaATDa9Fp6CRD8
 =I9PV
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.19' into v0.19.x
2014-11-26 20:02:57 +01:00
Max Kellermann 04f627c2af release v0.18.19 2014-11-26 19:58:48 +01:00
Max Kellermann 12b6959ea2 Playlist: reset song priority on playback
A priority should be a volatile thing: it should schedule a song for
playing back once, but it should not affect the next time the queue
gets played.
2014-11-26 08:54:16 +01:00
Max Kellermann 70b5a81a29 {Tag,Song}Print, PlayerCommands: report song duration with milliseconds precision 2014-11-25 17:46:43 +01:00
Max Kellermann 83fd822e8b ApeTag: drop support for non-standard tag "album artist"
This was used by proprietary software.  MPD adopted it a few years
ago, which turns out to be a mistake, because it now creates problems
for some MPD users (http://bugs.musicpd.org/view.php?id=4168).
2014-11-25 17:07:08 +01:00
Max Kellermann 3cef348f30 lib/nfs/Manager: defer NfsConnection destruction
Avoids a crash that occurs when NfsConnection::OnSocketReady()
dereferences itself before returning.
2014-11-25 13:31:18 +01:00
Max Kellermann fa4d202e71 decoder/mp4v2: remove because of incompatible license
libmp4v2 is licensed under MPL 1.1, which is incompatible with GPLv2.
Unfortunately, this means that we must remove the plugin.

More information can be found in the Debian bug report:

 http://bugs.debian.org/767504
2014-11-25 13:10:52 +01:00
Max Kellermann a254f5a3a8 archive/zzip: fix inverted error handler
Set the Error when zzip_seek()==-1 and not on success.  Fixes a crash
after seeking.
2014-11-24 22:08:50 +01:00
Max Kellermann 143c735f96 configure.ac: prepare for 0.18.19 2014-11-24 22:08:50 +01:00
Max Kellermann bf15cac980 Merge branch 'v0.19.x' 2014-11-24 09:00:14 +01:00
Max Kellermann 951bad46e0 decoder/{dsdiff,dsf,opus}: fix deadlock while seeking 2014-11-24 08:54:30 +01:00
Max Kellermann bbc618b8f9 configure.ac: prepare for 0.19.5 2014-11-24 08:09:44 +01:00
Max Kellermann 26382713c2 release v0.19.4
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUa674AAoJECNuiljG20USNMUQAIpl0/cJI98dljXWZ4uzaRoc
 JMPTvWkVUP9qBN3VnNISR+2NXsL7iGO6rXh9MACpfv8mcOf+/jg8LCX/3/RzDkP+
 lnhFqQ+xnl3TUjwpABKM2lU87I8QXamtCbxEvONTpcH4Dt/GVfBolrlzBu1G17cF
 7f07uZntpz/Dhtg0SWCVLS+QDGQtDNCgpXcfGlxWsGfEBWKAC+Aifv+2QDA0nXOU
 WfOU2r3vV3UNmQSu0/O6cyB5Du01SVVYSa5BNpLu3o6CHawAhVcTXdLX12JSDahk
 Qjy9VAF9bX+odZJ9M4xAlRBZYZWKfiZ6Dt0FevevqAllkd2GlQJPXWWXWXJ4PWd+
 a3K/js1hLgCIO2qk8aDKaFGTOnVk5F5eFN6d+jh5gwcuFiGa0CcSWxaCEe7vBVy3
 CTukuUBlgN4hA9gBNNvJrpbV+BO8ZY1LkS6w3E95Qz3VrwclTl5qKW2+6TYLMKBA
 VIBQM8TwOHAKyhn50vhBfk6Zz6c28LkrMc0Ycm5xFD1I3fC6E62vqDVfBUMr9HJi
 fG3PmxcrSTH8ZKgSADjF7DtR0M5munUrQhw7w0pwXUpKuDvUg3nIHulu88Dl9rZq
 MDODNRpBkQwGXs9i4SxLTSA9nQtlAh3x3mqtjOf1i2jhkuSJ8R8jQne+8wDaT0Bt
 dXD9h+qc/8+FOnrB0uYd
 =LYOC
 -----END PGP SIGNATURE-----

Merge tag 'v0.19.4'
2014-11-18 21:47:20 +01:00
Max Kellermann d6bc5c35a7 release v0.19.4 2014-11-18 21:40:52 +01:00
Max Kellermann dc03f003ac release v0.18.18
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
 iQIcBAABAgAGBQJUa62OAAoJECNuiljG20US1CkP/3YaAg76hJDaeFAyi7/10lOs
 yI8tPmpQk8S+nuclsBJeIr+9xNRsjb1ebW4tI9uBRxqMT10SF7rMCH/qAmgnS9tQ
 6M48hF0o9xegjz4x5BosEJjXtiekYN068Xi/hk+H27guVy14f6Xx7oRpdr5oI/O0
 F83D1V2+vs6FuOyn42UQQNHVlYMac5SScHoSFomnwRYWI2wb2ay4H5Dlykb5BUl0
 tTjJ2lYwN18vUoMxjmCNS+bLd7jag6FZ/PXntB1zXe22R17eAIuFZAMKaQvnQtUi
 QZjFPhpd+mBsZLfokB3belyNNb4F6qSG2W6lZrFRB+SU/LqnY2AL/dxPJD9eiufs
 5jEIOw9hNBBKo217+hkPwp5pAF50u11tKXUXbKGeR42zAO0zll/+g2afVwoqdAfD
 llPDyQyXiB3tmA1bgJD7u9gaud3UaaXoxajPb5LnmklzGxiN5u1rnoo+E5ppBvQ4
 31wPHGpzsjxEC7Xn9hErPP17jYXY1HT/xRb8XZNrFqJVZxSyjqQlDWomhCWDcvPc
 Du1PyKaQ08zgElEM5trwC9RjJxQdr0sckQcTnYC/0ksfJ7Nhh8M2yepEI/gmWbnO
 JBQ7YzpQhE9oMMH8jzVLLdC44yF6QvXcGQ3D9eUfwvPk9Z70mHlNI3Q6kbZ76U5j
 RHLp+oSaxFUXfPdciZaw
 =GO+k
 -----END PGP SIGNATURE-----

Merge tag 'v0.18.18' into v0.19.x
2014-11-18 21:38:44 +01:00
Max Kellermann 7aa2104596 release v0.18.18 2014-11-18 21:34:03 +01:00
Max Kellermann 460cfba6ff QueueCommands: workaround for buggy clients that send "add /" 2014-11-18 21:31:54 +01:00
Max Kellermann c8b93d6573 Client: assume uid==0 is local socket
A negative uid value means it's not a "local socket" (PF_LOCAL).
uid==0 means user "root" connected.
2014-11-18 20:56:27 +01:00
Max Kellermann f37481f843 DatabaseCommands: add "window" parameter to "search"/"find" 2014-11-18 14:31:27 +01:00