Max Kellermann
ecaa51e322
db/simple: purge special directories for unavailable plugins on update
2020-10-27 19:14:31 +01:00
Max Kellermann
0779333064
db/update/Walk: adjust lamba indent
2020-10-27 19:14:31 +01:00
Max Kellermann
5a4055fb08
event/SocketMonitor: refactor to SocketEvent
...
Similar to commits 1686f4e857
and
30a5dd267b
2020-10-14 15:54:12 +02:00
Max Kellermann
eeb96eb367
event/TimerEvent: add type alias for std::chrono::steady_clock::duration
2020-10-08 20:48:50 +02:00
Max Kellermann
c843bce9f5
LogLevel: rename DEFAULT to NOTICE
...
"DEFAULT" is a bad name - all it says is that it's the default value,
but it doesn't say what it means. The name NOTICE mimics the syslog
level.
2020-09-23 14:22:33 +02:00
Max Kellermann
0acc398c52
Merge branch 'v0.21.x' into master
2020-09-17 14:44:20 +02:00
Max Kellermann
4c1cfca95b
db/update/InotifyUpdate: pass path by value to recursive_watch_subdirectories()
2020-09-17 14:18:29 +02:00
Max Kellermann
e113ce9621
db/update/InotifyUpdate: obey .mpdignore
files
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/846
2020-09-17 14:17:17 +02:00
Max Kellermann
e8213220e2
db/update/InotifyUpdate: split the WatchDirectory constructor
2020-09-16 21:08:22 +02:00
Max Kellermann
83f9d2a963
db/update/InotifyUpdate: use class DirectoryReader
2020-09-16 21:02:07 +02:00
Max Kellermann
bf97ebf89f
db/update/InotifyUpdate: convert pointer to reference
2020-09-16 20:59:41 +02:00
Max Kellermann
5b22d27cbb
db/update/InotifyUpdate: remove commented log call
2020-09-16 20:59:40 +02:00
Max Kellermann
b18fc3a8d0
db/update/InotifySource: use auto
2020-09-16 20:40:27 +02:00
Max Kellermann
a8e23c4140
db/update/InotifySource: add noexcept
2020-09-16 20:40:06 +02:00
Max Kellermann
fc3861b421
db/update/InotifyQueue: add noexcept
2020-09-16 20:40:03 +02:00
Max Kellermann
e81bb5d8f1
db/update/Inotify*: include cleanup
2020-09-16 20:39:44 +02:00
Max Kellermann
9964a5ffe8
db/update/Service: avoid copying the mount point path
2020-07-06 21:09:58 +02:00
Max Kellermann
c3cfb5fe16
Merge branch 'v0.21.x'
2020-07-06 20:56:52 +02:00
Max Kellermann
5b291ff768
db/update/Walk: pass concatenated .mpdignore URI to storage.MapUTF8()
...
Fixes the "Unrecognized URI" error with the udisks storage plugin,
which is caused by the kludge in UdisksStorage::MapUTF8().
2020-07-06 17:19:38 +02:00
Rosen Penev
e4dad42ca1
use std chr functions
...
The ones in std have overloads for const char/char.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-05-30 13:36:53 +02:00
Max Kellermann
9815d10137
system/FileDescriptor: move to io/
2020-05-05 14:27:03 +02:00
Max Kellermann
212401d687
db/update/Service: pass std::string_view to Enqueue()
2020-04-08 23:38:28 +02:00
Max Kellermann
dd831d3922
db/simple: pass std::string_view to Directory::LookupDirectory()
2020-04-08 23:38:24 +02:00
Max Kellermann
2c02a04566
db/update/Walk: pass std::string_view to DirectoryMakeUriParentChecked()
...
Split the string into path segments with StringView::Split(). This
prepares to eliminate all allocations from the method.
2020-04-08 23:09:37 +02:00
Max Kellermann
a98d627c0b
storage/Interface: convert URI parameters to std::string_view
2020-04-03 19:45:10 +02:00
Max Kellermann
bcf4645263
db/simple/Directory: add LookupResult::uri
2020-04-03 17:18:00 +02:00
Max Kellermann
6c8eb3c7ed
db/simple/Directory: rename LookupResult::uri to "rest"
2020-04-03 17:07:15 +02:00
Max Kellermann
747436b17e
db,storage: pass std::string_view to PathTraits::Build()
2020-04-03 16:25:09 +02:00
Max Kellermann
7a58b8c3e8
fs/AllocatedPath: pass std::string_view to FromUTF8()
2020-04-03 16:21:41 +02:00
Max Kellermann
f0923231d0
storage/Interface: pass std::string_view to MapChildFS()
2020-04-02 20:14:00 +02:00
Max Kellermann
6593b5998a
db/simple/Directory: pass std::string_view to several methods
2020-04-02 19:58:24 +02:00
Max Kellermann
d5fd309484
db/update/IO: pass std::string_view to directory_child_is_regular()
2020-04-02 19:50:16 +02:00
Max Kellermann
66bcf04cbd
db/update/Queue: pass std::string_view to Push()
2020-04-02 19:49:16 +02:00
Max Kellermann
8cd5e79fbd
event/*, ...: make GetEventLoop() const
2020-03-26 17:19:13 +01:00
Rosen Penev
97425d56e7
remove gcc_unused
...
[[maybe_unused]] (introduced in C++17) is standard C++.
https://clang.llvm.org/docs/AttributeReference.html#maybe-unused-unused
says that this is equivalent to the GNU unused attribute.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-16 00:08:21 -07:00
Rosen Penev
a2f5a63bbc
replace stdint.h with cstdint
...
The former is deprecated by C++14. The standard says they are the same:
The header defines all types and macros the same as the C standard library
header<stdint.h>.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 19:04:39 -07:00
Rosen Penev
4b57b7f5a5
replace limits.h with climits
...
The former was deprecated with C++14. The standard says they are the same
with one exception:
The header<climits>defines all macros the same as the C standard library
header<limits.h>.
[Note:The types of the constants defined by macros in<climits>are not
required to match the types to which themacros refer.— end note]
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 16:14:04 -07:00
Rosen Penev
edc4989d9c
change errno.h to cerrno
...
The former is deprecated by C++14. It's also functionally the same.
From the standard:
19.4
The header<cerrno>is described in Table 43. Its contents are the same as
the POSIX header<errno.h>,except that errno shall be defined as a macro.
[Note: The intent is to remain in close alignment with the POSIX
standard.] A separate errno value shall be provided for each thread.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 15:51:16 -07:00
Rosen Penev
ab9f5d2067
replace assert.h with cassert
...
The former was deprecated with C++14.
According to the C++11 and C++17 standards, both files are identical.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 15:25:38 -07:00
Rosen Penev
f00f8b002a
[clang-tidy] use nodiscard
...
Introduced in C++17. It replaces gcc's warn_unused_result.
Found with modernize-use-nodiscard.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 12:59:16 -07:00
Max Kellermann
01632d37ef
Merge branch 'v0.21.x'
2020-03-12 08:11:08 +01:00
Max Kellermann
b7ce452308
fs/Traits: add IsSpecialFilename()
...
Merge some duplicate code in a central library.
2020-03-07 09:30:56 +01:00
Rosen Penev
568deefd68
[clang-tidy] remove pointless void arg
...
Found with modernize-redundant-void-arg
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-01 19:52:38 -08:00
Max Kellermann
72ec641f0d
*: use auto
2020-02-01 14:02:43 +01:00
Rosen Penev
b64fdae938
[clang-tidy] use override instead of virtual
...
Found with modernize-use-override
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-01-31 21:27:26 -08:00
Max Kellermann
2817bf9e95
copyright year 2020
2020-01-18 19:23:49 +01: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
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
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
ee36a48dbb
db/simple/Directory: RemoveSong() returns SongPtr
2019-09-05 21:12:10 +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
949916cba1
db/simple/Song: convert NewFrom() to constructor
2019-09-04 12:03:49 +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
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
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
2038620bc4
db/simple/Directory: add method IsReallyAFile()
2019-09-02 20:15:52 +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
40a2880857
util/UriUtil: split
2019-08-09 20:21:12 +02:00
Max Kellermann
fe2f8c088a
Partition, ...: add noexcept
to callback methods
2019-08-02 14:44:00 +02:00
Max Kellermann
d663f81420
include cleanups (powered by iwyu)
2019-07-05 09:59:58 +02:00
Max Kellermann
a139279575
Copyright year 2019
2019-06-17 11:17:30 +02:00
Max Kellermann
3fc4da382e
db/simple/Song: allow LoadFile(), UpdateFile() to throw
...
Preparing to move logger calls out of lower-level libaries, and
propagating error details to the caller instead.
2019-05-22 10:19:24 +02:00
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
2b4e9cc635
db/update/Service: wrap UpdateWalk in std::unique_ptr<>
2019-04-26 14:55:00 +02:00
Max Kellermann
093bf5d859
event/*, ...: make GetEventLoop() const
2019-04-04 20:07:57 +02:00
Max Kellermann
6c28adbcd2
db/Plugin: use std::unique_ptr<> to manage Database pointers
2019-02-20 20:43:31 +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
Max Kellermann
bda77ffc5b
db/Interface: remove IsPlugin(), use dynamic_cast
instead
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
f5c9071494
*: copyright year 2018
2018-10-31 17:54:59 +01: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
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
90201e9970
DetachedSong, db/LightSong, SongFilter: move to src/song/
2018-08-02 13:51:18 +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
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
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
63406efcd8
db/update/ExcludeList: allow comments only at start of line
2018-07-06 18:27:17 +02:00