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
Rosen Penev
608d7ec1e7
[clang-tidy] change integer prefixes to uppercase
...
Found with readability-uppercase-literal-suffix
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-26 17:25:20 +01:00
Max Kellermann
8cd5e79fbd
event/*, ...: make GetEventLoop() const
2020-03-26 17:19:13 +01:00
Max Kellermann
256cfc545d
Merge remote-tracking branches 'neheb/fwhfggwe', 'neheb/nvm2', 'neheb/nvm22', 'neheb/bvm' and 'neheb/cl2'
2020-03-16 17:25:50 +01:00
Rosen Penev
88d56c01e7
fix missing overrides
...
Found with clang's -Winconsistent-missing-destructor-override
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-16 00:11:15 -07: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
Max Kellermann
332f480ec3
util/UriExtract: uri_get_path() returns std::string_view
2020-03-13 18:54:41 +01: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
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
Max Kellermann
d072b3cb17
storage/smbclient: remove misplaced .c_str() call
2020-02-20 16:47:32 +01:00
Max Kellermann
646fef108a
storage/composite: make variable non-const to enable the std::move()
2020-02-20 16:41:38 +01:00
Max Kellermann
36a678276b
storage/composite: no "=default" in constructor
...
Closes https://github.com/MusicPlayerDaemon/MPD/pull/739 (essentially
the same, but with a proper explanation)
2020-02-16 19:07:08 +01:00
Rosen Penev
a3963de668
[clang-tidy] change integer prefixes to uppercase
...
Found with readability-uppercase-literal-suffix
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-04 15:20:50 -08:00
Rosen Penev
40d0420648
[clang-tidy] convert several loops to const auto&
...
Found with performance-for-range-copy
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-01 19:49:17 -08:00
Max Kellermann
bc6eca2115
*: add explicit
2020-02-01 14:02:43 +01:00
Max Kellermann
72ec641f0d
*: use auto
2020-02-01 14:02:43 +01:00
Max Kellermann
4c52001a35
*: use defaulted destructors
2020-02-01 13:47:16 +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
4937d77cb6
util/{Const,Writable}Buffer: drop "_type" from type names
...
Behave like STL.
2020-01-03 15:55:06 +01:00
Max Kellermann
803a48e96d
release v0.21.18
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl4CKwwQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEp46D/9q1pRkhYzCyZPQGX967UPoV+Bc1YMX4o2U
Uh/HqQrKKRAK9goaxu9yMKBIFCbzj6WEZou+/uMEf6ZwXuRcnJMobrUU4+G9Yu3r
FzlQPW870DyOhk2PWHF8CW3oMt/YH05b6nYNo2ocRnX69/oqL1G7ukbF2Pz3TPc0
0uNQYYERdMawNCEi1OarzziR6DKuiN+MtZRgUQVacAsoUirwWGNJuaGSDtc3MMM7
YhgKVmd9XsgVr7fykArj6PLsm2iyXJP5nDB/tIqmwMpQFyhuLUnGOMfhCq02em+r
47LGvmZiSS/9F2JzPU8EL2yzYdBe4QvU6Ol5SfXbom11MZc3Ty502g2jUXVHjCeo
1FljCPHbarTmKhvUc0xQXA9i6exZ0wwtxL+Zv7ZQKquRPAhq8E07qkQpdaTWa6vn
3RfilLE1B/GCgoT6D1+zABxdJ1HRLT7tzFob2kkCccxguK3j2JjCUIkSgM6IY0yv
a6sMEXbqa+Lh8jggs9ksoT6O+T2HHEr3tEfpFHY+t0NFRfwHd9aX9bNjK+Ji0n51
YBf2FCb2EBrMAWNZmEnq+TuKX0HASDtoAXTviRKqBXtEG5V8MdAt4PPICCb+bkDr
psIuYcGeK3vofvq1SwEC7h7gCvsBK5w17/oE2/jYcZLo12H1IdHe5gMP3OUhjel5
BRi6rLlkYw==
=XXXs
-----END PGP SIGNATURE-----
Merge tag 'v0.21.18'
release v0.21.18
2019-12-24 16:31:06 +01:00
Max Kellermann
d01fb6730a
storage/curl: move start call out of the constructor
...
This can cause request completion in the I/O thread before this
constructor returns, leaving the object in an abstract state, causing
a crash due to pure virtual method call. We should not start the
request until this object is fully constructed.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/665
2019-12-23 13:37:58 +01:00
Max Kellermann
e9af692973
util/Time*: move to time/
2019-12-16 23:02:14 +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
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
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
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
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
214ddee2f5
util/Time*: move to time/
2019-05-08 15:47:58 +02:00
Max Kellermann
973c87b351
event/Call, ...: use wait() with predicate
2019-05-07 20:01:45 +02:00
Max Kellermann
92022658f9
thread/Cond: add wait() overload which takes a unique_lock<>
...
Just like std::condition_variable, which however has no way to specify
the std::mutex directly.
2019-04-26 11:51:45 +02:00
Max Kellermann
b51bae5500
thread/*Cond: rename methods to match std::condition_variable
2019-04-25 19:46:43 +02:00
Max Kellermann
2c0a968735
storage/smbclient: use std::lock_guard
2019-04-25 19:23:37 +02:00
Max Kellermann
84c406d5f5
storage/nfs: use class ScopeUnlock
2019-04-25 19:22:57 +02:00
Max Kellermann
093bf5d859
event/*, ...: make GetEventLoop() const
2019-04-04 20:07:57 +02:00
Max Kellermann
83f7610dd1
storage/udisks2: move empty string check out of the fallback block in MapUTF8()
...
Even if the LocalStorage is available, return the "udisks://" URI when
the MapUTF8() parameter is an empty string. This fixes the mount URI
in the state file.
2019-02-22 15:07:40 +01:00
Max Kellermann
d5983dd362
storage/udisks2: use the relative path
...
Closes #487
2019-02-22 14:41:56 +01:00
Max Kellermann
98258acc37
storage/udisks2: pass Path to SetMountPoint()
2019-02-22 14:41:56 +01:00
Max Kellermann
bbaeea1ab7
storage/udisks2: use existing mount point if already mounted
...
Fixes the "org.freedesktop.UDisks2.Error.AlreadyMounted" error.
Closes #485
2019-02-21 13:32:03 +01:00
Max Kellermann
0a3aee9d82
storage/udisks2: move code to SetMountPoint()
2019-02-21 13:31:59 +01:00
Max Kellermann
2434020971
storage/udisks2: adjust lambda indent
2019-02-21 13:31:57 +01:00
Max Kellermann
8b5c33cecd
Instance: use std::unique_ptr<> to manage the Database pointer
2019-02-20 20:48:20 +01:00
Max Kellermann
281461f0f0
nfs: work around assertion failure on exception during program init
...
Closes #477
2019-02-15 18:33:58 +01:00
Jacob Vosmaer
66f5b0fed7
Add boost_dep in subdir meson.build files
2018-12-09 17:20:47 +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
94592c1406
build with Meson instead of autotools
...
So long, autotools! This is my last MPD related project to migrate
away from it. It has its strengths, but also very obvious weaknesses
and weirdnesses. Today, many of its quirks are not needed anymore,
and are cumbersome and slow. Now welcome our new Meson overlords!
2018-10-14 23:41:38 +02:00
Max Kellermann
ec54754e22
Compiler.h: move to util/
2018-08-20 16:19:17 +02:00
Thomas Guillem
735f62be0c
storage/nfs: implement follow
2018-08-20 11:29:27 +02:00
Max Kellermann
0b7d7fe069
Merge branch 'v0.20.x'
2018-08-20 11:27:56 +02:00
Thomas Guillem
9127afbf3f
lib/nfs/Connection: use nfs_stat64_async
...
Since nfs_stat_async is deprecated.
2018-08-20 10:51:24 +02:00
Max Kellermann
616abdda26
Merge branch 'v0.20.x'
2018-08-20 00:19:31 +02:00
Joshua Wise
29f78b18b1
storage/plugins/CurlStorage: URL-encode paths in CurlStorage::MapUTF8
...
When using a database that was not created with a WebDAV music_directory
(i.e., if using a remote database, on which updates happen locally) and
using the Curl storage plugin, MPD would previously send GET requests that
had unescaped spaces in them. This change uses Curl's URL-encode API to
solve this.
2018-08-17 23:03:56 +02:00
Max Kellermann
cf471e830f
Merge branch 'v0.20.x'
2018-08-02 11:07:40 +02:00
Max Kellermann
906972973e
case-insensitive URI scheme comparison
...
Required according to RFC 3986:
> An implementation should accept uppercase letters as equivalent to
> lowercase in scheme names
Closes #330
2018-08-02 11:01:45 +02:00
Max Kellermann
32290d5eb8
fs/Path: add method ToUTF8Throw()
2018-07-18 16:51:29 +02:00
Max Kellermann
d2594c6380
storage/Configured: use struct ConfigData
2018-07-17 22:57:08 +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
60d5bf0240
util/StringFormat: new utility library
2018-07-06 19:07:02 +02:00
Max Kellermann
5217a74b7f
storage/udisks: return file path in MapUTF8()
...
The absolute udisks:// URI is not usable with InputStream::Open(), and
thus we need to return the LocalStorage::MapUTF8() return value
instead.
2018-06-05 22:01:28 +02:00
Max Kellermann
cccf35d140
storage/udisks: add missing MountWait() call to MapFS()
2018-06-05 21:56:28 +02:00
Max Kellermann
249316c8fc
storage/udisks: implement MapFS()
2018-06-05 21:54:50 +02:00
Max Kellermann
ba8040d068
storage/udisks: new plugin
...
Documentation will follow soon.
2018-06-04 22:00:52 +02:00
Max Kellermann
b30a510b45
release v0.20.18
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlqR3zoQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEqNGEACGhsZJbhqls0EawfHhpOz/x7JcloMLWvoX
GzuvVinhdFmmFId0akLsg3TCyGElNA+4YzfDjB1TyMpPFBUxM/nnthYPrSmjiT68
t+0IV6OnqFVLE2PF6pHV2Gia0Km746GZBJ+TRLeZSIksADH7nU+soepIA6idwNRN
x8Wo0ashsRIPG3FyL6f/2W/vUvD/enoxohCBB/tvnZ73Px0k2bYAwlBNW/i9/yrX
ktJ2yJqbCkKOhBQnbUvsG72Nrd4/Iz2m7cA//KBVrDEGwNv5hxNKiK/hCq3YK2W9
Ndnl0+EQxNLT1NUwF5e1LS3GtU2Mh3FQwrcq81Cj7o/wEH5e7piKBZhwDCBgOYYH
vLbaLYWK+XW/EqitkRZx5ZBrfNoqOrLreX0d2+AZJOjKDjAWgMZXoOEjmQC9/Dcj
pGcRow4jAusBRJKVN0Wmu6eeVQMjiYJNWehhyhhruShHL2ZAjJSuDhygAFW5YB3I
N2kfhwZWMHVFpA0HvcVx5JwNx7U1OyJGs0lRGThV/6jhnklGzoujvomRNJ6VNx10
ppYhmcLaHm19GR1eb8KCYnZYL2QWoQT5YLVlm0vybTX9i1k3wdf9ezU/n5hB52rP
j20Ol1I9YQw4/L985SV1W+8ll1i71o9paoJx17C8AQpxWWamQLe+vgENt9fPKIPl
aLBYU7hq9Q==
=ndLr
-----END PGP SIGNATURE-----
Merge tag 'v0.20.18'
release v0.20.18
2018-02-24 23:16:06 +01:00
Max Kellermann
cd48d981b5
storage/nfs: use PathTraitsFS::const_pointer_type
2018-02-24 22:44:42 +01:00
Max Kellermann
774d26b982
storage/nfs: assume UTF-8 when accessing NFS from Windows
...
Fixes two build failures with libnfs on Windows.
2018-02-24 22:44:42 +01:00
Max Kellermann
97f670658f
util/StringFormat: new utility library
2018-01-24 13:28:28 +01:00
Max Kellermann
b6d858f4d6
lib/expat/Parser: make the "is_final" argument optional
2018-01-21 14:37:10 +01:00
Max Kellermann
dedede3caa
lib/expat/Parser: add method CompleteParse()
2018-01-21 14:35:47 +01:00
Max Kellermann
61eb2aa328
storage/Interface: wrap StorageDirectoryReader in std::unique_ptr
2018-01-21 11:04:30 +01:00
Max Kellermann
bbc5212436
fs/AllocatedPath: make the nullptr_t constructor public
2018-01-17 12:17:41 +01:00
Max Kellermann
dcd483bd99
storage/Composite: use std::unique_ptr<Storage>
2018-01-02 16:18:34 +01:00
Max Kellermann
3c5e4e2788
storage/Plugin: return std::unique_ptr<Storage>
2018-01-02 16:11:17 +01:00
Max Kellermann
28c5e7e6a7
Merge branch 'v0.20.x'
2018-01-02 14:16:47 +01:00
Max Kellermann
ff624075a8
storage/State: check if a CompositeStorage exists; fixes nullptr dereference
...
Fixes another crash bug caused by commit
64d141f71e
2018-01-02 14:13:26 +01:00
Max Kellermann
08db28469d
storage/State: make mount errors non-fatal
...
Fixes crash bug caused by commit
64d141f71e
2018-01-02 14:07:52 +01:00
Max Kellermann
a20b326807
storage/State: fix memory leak after database mount failure
...
Caused by commit 64d141f71e
This wasn't a serious memory leak, because after a mount failure, MPD
would abort anyway, which is subject to the next commit.
2018-01-02 14:05:07 +01:00
Max Kellermann
4db1b1b250
storage/State: remove useless #ifdef ENABLE_DATABASE
...
This source file isn't compiled when the database is disabled.
2018-01-02 13:48:16 +01:00
Max Kellermann
3d1d779da7
storage/State: use std::set instead of sorting a std::list
2017-12-21 10:22:00 +01:00
Max Kellermann
914df18bf9
Main, ...: catch any exception, not just std::runtime_error
2017-12-19 10:56:23 +01:00
Max Kellermann
093ca5d492
storage/Interface: add "noexcept"
2017-12-18 23:54:21 +01:00
Max Kellermann
1d24dd3067
storage/State: use std::set instead of sorting a std::list
2017-12-18 23:50:31 +01:00
Max Kellermann
b9659ba0c0
release v0.20.13
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlo4RDQQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEpm6EACTPaPwGbxS770jJ74vLGSltnZTohaKbRvp
rIaJGkHTTzPlvw8dpLHmave9fL5ODSchTBmIHqb0loM9011oJgvXUKq3fqEQJUUW
eFZ54emSDXOjholsd8ykJgrPjMBO2UNEk5T/r6bZdNZlLAN7yNOXkJHezPY8qyzA
s07o9jmFEKjyLOsMlmEaV2uiCZ9UhPUSUI+vy+Q7qwwil24AfOzXc4+gAB3bV87E
FFWWP8KO83X2ZrhPZdSeILFcI0i93X/l0rskvf4bgHtoegaYPWk/KnhPnmJ2DC48
GFzigB5ZbU+OGXz1We7O6DZg6KOB4Y6dDPThtxS0rBTZWCPM6biDVsDFexqACf8u
sCYTzaTlvAV2gHVGp3csVwXS9gqxYOZbiyMgyMOVKygrvuhgrnQydZQW8yweoscP
tRxVcKfHclbdsEJHboT1Tp4ibh4+iIT48muMpLDlX6h0KC4OOTSg8m3UGV6V4UAA
bkDVueFYQcr1tyENJbFGRt6gCENY7rdJMX30TvC0DhDtHXUwY6O5G//w5iqpeztv
svcOuQQURxmPcFuvIqpTpcX0bSEuYkCt9JF31xzFbvmUhB1bb4sZ+IMvBqS9fnUH
HJmDLLl7mppX3hlPDc9wLc3Dmpfr5Cd1GLO0CkWhnE8KBONV1auYXh8Gtwdsa/Rv
idA/53WlvQ==
=+PRl
-----END PGP SIGNATURE-----
Merge tag 'v0.20.13'
release v0.20.13
2017-12-18 23:48:14 +01:00
FlashSystems
64d141f71e
Save and restore mountpoints within the state file.
...
Signed-off-by: FlashSystems <developer@flashsystems.de>
2017-12-18 23:39:01 +01:00
Max Kellermann
6246d36fe6
Merge branch 'v0.20.x'
2017-12-16 20:56:06 +01:00
Max Kellermann
dfaf08743c
*: check defined(_WIN32) instead of defined(WIN32)
...
Only _WIN32 is defined by the compiler, and WIN32 is not standardized
and may be missing.
Closes #169
2017-12-12 10:22:20 +01:00