Max Kellermann
3850716522
command/Database: add "sort" parameter to "find" and "search"
...
Implement the second part of https://bugs.musicpd.org/view.php?id=3990
2017-02-08 11:22:08 +01:00
Max Kellermann
777e15bd78
db/DatabaseSong: make the Storage optional
...
Some database plugins don't use a Storage (e.g. UPnP), and with this
plugin, DatabaseDetachSong() can crash.
2017-02-08 10:05:55 +01:00
Max Kellermann
d184231169
db/DatabaseSong: DatabaseDetachSong(uri) returns instance, not pointer
2017-02-08 09:59:12 +01:00
Max Kellermann
7225e919fc
db/DatabaseSong: use AtScopeExit()
2017-02-08 09:58:40 +01:00
Max Kellermann
c1fa5279f4
db/Interface: clarify GetSong() error handling
2017-02-08 09:50:30 +01:00
Max Kellermann
29453ba196
client: add tag_mask attribute
...
The "tagtypes" command now has several sub commands which can be used
to edit that mask.
2017-02-08 09:06:11 +01:00
Max Kellermann
2f3f075e4f
tag/Mask: wrap in class
2017-02-08 09:04:45 +01:00
Max Kellermann
17097d96b7
db/{Count,Print}: use tag_print(), eliminate duplicate code
2017-02-08 09:04:41 +01:00
Max Kellermann
a3e28c2d1a
tag/Tag: move tag_name_parse() to ParseName.cxx
2017-02-08 08:57:22 +01:00
Max Kellermann
03a97d87ea
tag/Tag*: rename several source files
2017-02-08 08:49:42 +01:00
Thomas Zander
f71c204eef
Correct method types to match Interface.hxx
2017-01-31 21:22:02 +01:00
Max Kellermann
44dd9af276
lib/upnp/Util: pass single delimiter character to stringToTokens()
2017-01-23 19:34:55 +01:00
Max Kellermann
d3013d4f8c
lib/upnp/Util: remove parameter "skipinit", always true
2017-01-23 19:28:07 +01:00
Max Kellermann
1776015c6c
db/simple: drop redundant "virtual"
2017-01-23 18:57:23 +01:00
Max Kellermann
f1c71a26e3
db/proxy: drop redundant "virtual"
2017-01-23 18:56:45 +01:00
Max Kellermann
e78ab767d3
db/proxy: make connect errors during startup non-fatal
2017-01-23 18:55:40 +01:00
Max Kellermann
f01eb2f95d
db/proxy: improve Connect() error message
2017-01-23 18:55:18 +01:00
Max Kellermann
1450e45d97
Main, db/Glue: improve error messages
2017-01-23 18:52:16 +01:00
Max Kellermann
c6f89c42b2
db/proxy: make the base class of LibmpdclientError public
...
If the base class is not accessible, the "catching" the base class
won't work. This caused the fatal error:
terminate called after throwing an instance of 'LibmpdclientError'
2017-01-23 18:28:40 +01:00
Max Kellermann
fd910bd5e9
db/upnp: use "override" instead of "virtual"
2017-01-06 19:35:58 +01:00
Max Kellermann
5900253b85
update copyright year
2017-01-03 20:48:59 +01:00
Max Kellermann
2e182e84c3
thread/Mutex: remove ScopeLock, use std::lock_guard directly
2017-01-03 07:11:57 +01:00
Max Kellermann
b042095ac2
event/Loop: use std::chrono
2016-12-28 01:15:08 +01:00
Steven OBrien
541da2740d
db/simple: add missing "return"
...
SimpleDatabase::Visit() always throws exception when visiting a song.
Adding a song to the queue always results in a "No such directory"
error response, although the song is successfully added. This
behaviour was introduced by commit
3ff728ab02
. This patch fixes this.
https://bugs.musicpd.org/view.php?id=4601
2016-11-23 17:30:30 +01:00
Max Kellermann
95e2bec215
decoder/DecoderPlugin: container_scan() returns forward_list<DetachedSong>
...
Speed up container_scan() again, by eliminating the need to call
scan_file() for each item.
2016-11-22 16:49:31 +01:00
Max Kellermann
c5133f6088
db/update/Container: catch C++ exceptions
2016-11-22 12:16:14 +01:00
Max Kellermann
0abee77e62
decoder/DecoderPlugin: container_scan() returns forward_list<string>
2016-11-22 09:33:52 +01:00
Max Kellermann
22dcca9832
util/Error: remove obsolete class
2016-11-10 12:58:26 +01:00
Max Kellermann
a2e3dc0592
db/Interface: migrate Update() from class Error to C++ exceptions
2016-10-29 10:59:18 +02:00
Max Kellermann
df142d4f61
db/simple: migrate Mount() from class Error to C++ exceptions
2016-10-29 10:56:31 +02:00
Max Kellermann
fac8edd47a
db/Interface: migrate visitor methods from class Error to C++ exceptions
2016-10-29 10:42:56 +02:00
Max Kellermann
131441846b
db/Error: remove unused variable db_domain
2016-10-29 10:42:56 +02:00
Max Kellermann
3ff728ab02
db/Visitor: remove the Error parameter
...
Implementations shall use exceptions instead.
2016-10-29 10:04:43 +02:00
Max Kellermann
78bf4ef5fa
db/Configured: migrate from class Error to C++ exceptions
2016-10-29 10:01:50 +02:00
Max Kellermann
318d0b3976
db/simple/Save: move log call to SimpleDatabase::Load()
2016-10-29 10:00:35 +02:00
Max Kellermann
90a14e14f4
db/simple/Save: migrate from class Error to C++ exceptions
2016-10-29 09:45:34 +02:00
Max Kellermann
dea46e8d5a
db/Plugin: migrate from class Error to C++ exceptions
2016-10-28 23:15:22 +02:00
Max Kellermann
7e5ce623fe
db/simple: throw C++ exception on init error
2016-10-28 23:13:18 +02:00
Max Kellermann
e17805f208
config/Block: GetPath() throws exception on error
2016-10-28 23:08:42 +02:00
Max Kellermann
d8bcdca55a
config/Block: rename GetBlockPath() to GetPath()
2016-10-28 23:07:26 +02:00
Max Kellermann
4bd67bc298
db/update/InotifySource: migrate from class Error to C++ exceptions
2016-10-28 10:35:31 +02:00
Max Kellermann
1560749579
db/update/UpdateIO: include cleanup
2016-10-28 10:22:44 +02:00
Max Kellermann
c598686bd9
storage: migrate from class Error to C++ exceptions
2016-10-27 21:35:19 +02:00
Max Kellermann
086652dd50
Instance: add GetDatabaseOrThrow()
2016-10-26 18:47:19 +02:00
Max Kellermann
100308db02
db/update: catch exceptions from Storage plugins
2016-09-16 17:43:32 +02:00
Max Kellermann
220d9528a3
archive/Plugin: migrate open() from class Error to C++ exceptions
2016-09-09 18:36:36 +02:00
Max Kellermann
d3c7fac606
thread/Thread: throw std::system_error on error
2016-06-17 19:11:20 +02:00
Max Kellermann
c98330909a
db/update/Walk: use AllocatedPath methods instead of PathTraitsFS
2016-04-21 14:15:01 +02:00
Max Kellermann
b9f535cd49
lib/icu/Win32: throw exception on error
2016-04-21 10:15:40 +02:00
Max Kellermann
cd041f8574
decoder/Plugin: container_scan() returns AllocatedString
2016-04-13 12:23:10 +02:00
Max Kellermann
2fd5182608
db/Interface: GetSong() throws exception on error
2016-03-19 00:19:50 +01:00
Max Kellermann
f55bdf07d3
db/Interface: Open() throws exception on error
2016-03-19 00:05:11 +01:00
Max Kellermann
6c2b532ae3
db/proxy: throw exception on error
2016-03-19 00:02:50 +01:00
Max Kellermann
2539f294e4
db/proxy: move code to MakeError()
...
Use this function instead of CheckError() when we already know an
error has occurred.
2016-03-18 23:43:28 +01:00
Max Kellermann
b6a3ce9305
db/proxy: fix inconsistent error handling in VisitUniqueTags()
2016-03-18 23:42:04 +01:00
Max Kellermann
b07495aae9
db/proxy: remove superfluous CheckError() call
2016-03-18 23:41:24 +01:00
Max Kellermann
686a53215d
db/proxy: use AtScopeExit()
2016-03-18 23:10:42 +01:00
Max Kellermann
6fd7d8191e
db/simple: refactor Check() to throw exception
2016-03-18 22:21:09 +01:00
Max Kellermann
2ccd1cc9f0
db/simple: remove misplaced "pure" attribute
2016-03-18 22:18:09 +01:00
Max Kellermann
8167bdd978
db/simple: handle Database::Open() exceptions in Mount()
2016-03-18 18:55:54 +01:00
Max Kellermann
dfb3e34f7b
db/lazy: remove obsolete class
...
Obsoleted by commit d4d4d621
2016-03-18 18:48:27 +01:00
Max Kellermann
45ee75055e
db/upnp: remove obsolete code comment
2016-03-18 18:48:00 +01:00
Max Kellermann
7e096ee2c5
db/update/Remove: update code comment
2016-03-18 16:58:06 +01:00
Max Kellermann
86a90daf1b
db/update/Remove: pass URI to Remove()
2016-03-18 16:57:43 +01:00
Max Kellermann
42f7df9681
db/update/Remove: reimplement as a non-blocking queue
...
This reduces overhead for two reasons:
1. calls to Remove() are non-blocking
2. RunDeferred() may work on large chunks at a time, reducing the
number of RunDeferred() calls
2016-03-18 16:43:02 +01:00
Max Kellermann
2edad38c7c
db/DatabaseListener: pass URI to OnDatabaseSongRemoved()
...
There's no point in passing a LightSong reference here; the callee is
interested only in the URI.
2016-03-18 16:22:33 +01:00
Max Kellermann
099455db25
db/update/Service: convert const to constexpr
2016-03-05 20:08:01 +01:00
Max Kellermann
3146bf51e6
db/update/Service: eliminate attribute "progress"
...
Use walk!=nullptr instead.
2016-03-05 19:40:11 +01:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
65386f52f0
db/proxy: throw DatabaseError on error
2016-02-28 11:47:03 +01:00
Max Kellermann
5b8dce7456
db/simple: throw DatabaseError on error
2016-02-28 11:40:59 +01:00
Max Kellermann
de938eb621
db/simple: handle exception in Open() properly, fix memory leak
2016-02-28 11:40:39 +01:00
Max Kellermann
83cc6c0835
db/simple: use second Error instance in Open()
...
Don't need to clear the caller-specified one.
2016-02-28 11:38:22 +01:00
Max Kellermann
b6cb9b853a
queue/PlaylistEdit: throw PlaylistError on error
2016-02-28 11:02:36 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
d9e8ce22cb
util/Error: use std::exception_ptr instead of std::exception
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
Same fix as in commit 1c904000
2016-02-26 16:32:24 +01:00
Max Kellermann
a670ff6d3e
SongUpdate: remove obsolete overload UpdateFileInArchive(Storage)
2016-02-26 15:06:16 +01:00
Max Kellermann
32f6d34904
db/update/Archive: rescan tags on existing songs in archive
...
This is the final piece for full ID3/APE support in archives.
2016-02-26 15:05:49 +01:00
Max Kellermann
96f4394dce
db/update/Archive: pass ArchiveFile to Song constructor
...
Don't open the ZIP file again and again for each song file.
2016-02-26 15:05:40 +01:00
Max Kellermann
35567e6507
SongUpdate: add UpdateFileInArchive(ArchiveFile&)
2016-02-26 14:53:37 +01:00
Max Kellermann
6c5bc9b4a3
lib/expat: use C++ exceptions instead of class Error
2016-02-07 12:58:20 +01:00
Max Kellermann
cd2f65aafc
upnp/ContentDirectoryService: use AtScopeExit() for ixmlDocument_free()
...
For exception-safety.
2016-02-07 12:56:55 +01:00
Max Kellermann
3ee5093b03
lib/upnp: use C++ exceptions instead of class Error
2016-02-07 12:53:21 +01:00
Max Kellermann
4b79f0047d
db/DatabaseError: add exception class DatabaseError
2016-02-07 01:09:33 +01:00
Max Kellermann
0d8e44a079
db/DatabaseError: rename enum db_error and make strictly-typed
2016-02-07 01:01:10 +01:00
Max Kellermann
f3503e0026
fs/DirectoryReader: use C++ exceptions instead of class Error
2015-12-29 12:56:26 +01:00
Max Kellermann
1f184f4aec
PlaylistFile: throw exception on spl_map_to_fs() failure
2015-12-28 14:20:37 +01:00
Max Kellermann
7562c5751c
db/Configured: allocate ConfigBlock on the stack
2015-12-18 09:17:12 +01:00
Max Kellermann
e6e7d6dbd6
fs/io/Reader: use C++ exceptions instead of class Error
2015-12-18 01:08:16 +01:00
Max Kellermann
e4a06da14e
fs/io/OutputStream: use C++ exceptions in Write()
2015-12-16 10:24:43 +01:00
Max Kellermann
36d6ead65c
fs/io/GzipOutputStream: use C++ exceptions in constructor
2015-12-16 10:14:56 +01:00
Max Kellermann
7eae3bc8c5
fs/io/FileOutputStream: use C++ exceptions in Commit()
2015-12-16 00:33:33 +01:00
Max Kellermann
24b2198668
fs/io/FileOutputStream: use C++ exceptions in constructor
2015-12-16 00:33:30 +01:00
Max Kellermann
d29be0f460
db/simple: use std::unique_ptr<GzipOutputStream>
2015-12-16 00:33:10 +01:00
Max Kellermann
c11345c4d9
db/DatabaseLock: add class ScopeDatabaseUnlock
2015-12-16 00:07:51 +01:00
Max Kellermann
e31f0b8b0c
db/simple: use class ScopeDatabaseLock
2015-12-16 00:07:51 +01:00
Max Kellermann
7dd3b72a8c
db/DatabaseLock: add ScopeDatabaseLock::unlock()
2015-12-16 00:07:51 +01:00
Max Kellermann
c513478c31
db/simple: use StringAfterPrefix() instead of StringStartsWith()
2015-11-11 15:27:56 +01:00
Max Kellermann
e7ef7f5159
db/update/InotifyQueue: use StringAfterPrefix()
2015-11-06 09:49:39 +01:00
Max Kellermann
c880099deb
util/StringCompare: add StringIsEmpty()
2015-11-06 09:37:07 +01:00