Max Kellermann
b86d8d0cd8
config/Param: add method ThrowWithNested()
2019-05-29 21:46:27 +02:00
Max Kellermann
a854595886
event/ServerSocket: runtime error if abstract sockets are unavailable
2019-03-20 13:09:16 +01:00
Max Kellermann
4f408bd952
event/ServerSocket, doc, ...: refer to AF_LOCAL as "local socket"
...
.. and not "UNIX domain socket. Be consistent about the naming.
2019-03-20 12:57:26 +01:00
Max Kellermann
44422b2b2f
event/ServerSocket, config/Net: abstract socket support
2019-02-25 13:08:33 +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
5b2374b949
player/Thread: calculate buffered_before_play
based on a fixed duration
...
Previously, there was the setting `buffered_before_play` which
specified a percentage of the audio buffer, defaulting to `10%`. That
was working well enough for quite some time, until high-quality audio
formats became common.
At 44.1 kHz, 16 bit stereo, MPD collected 2.3 seconds worth of data in
the buffer before starting playback. With the same default settings
and 192 kHz, 24 bit stereo, that was only 0.27 seconds.
Making this depend on the byte size only leads to high latency at low
quality, and too little data at high quality. The natural choice
would be to use a duration instead of a byte size, which should give
the same good experience with all audio formats.
Since the `buffered_before_play` configuration setting was not
understood well by users and caused more harm than good, this commit
deprecates it. It has now no effect.
2018-09-23 15:46:29 +02:00
Max Kellermann
a82d864c91
config/File: print warning about deprecated options
2018-09-23 15:43:38 +02:00
Max Kellermann
ec54754e22
Compiler.h: move to util/
2018-08-20 16:19:17 +02:00
Max Kellermann
bd32a11016
config/Global: remove obsolete library
2018-08-19 23:08:41 +02:00
Max Kellermann
afd0fe666a
config/Global: move config_global_check() to Check.cxx
2018-08-19 23:01:30 +02:00
Max Kellermann
5f95c07305
config/Path: add InitPathParser()
...
Eliminate yet another access to the global ConfigData instance.
2018-08-19 22:29:39 +02:00
1848
52521d02ea
Added a function for generic address parsing
...
Changed listen_add_config_param() to use generic address parsing
2018-08-07 19:18:33 +02:00
Max Kellermann
68c023cdd8
config/Path: simplify expression
2018-08-02 09:43:48 +02:00
Max Kellermann
b18b0bf328
config/Path: remove unnecessary IsNull() check
...
`AllocatedPath::FromUTF8Throw()` will never return a nulled instance.
2018-08-02 09:43:17 +02:00
Max Kellermann
f30265a9ee
config/File: support wildcards in "include"
2018-07-18 17:28:30 +02:00
Max Kellermann
09f743dc1a
config/File: add directive "include_optional"
2018-07-18 13:10:36 +02:00
Max Kellermann
035f986a91
config/File: support absolute paths in "include"
2018-07-18 13:09:04 +02:00
Max Kellermann
06c2aef3c7
config/File: fix typo in comment
2018-07-18 12:39:39 +02:00
Max Kellermann
d06ef76e58
config/File: implement the "include" directive
...
This is an experimental draft. More needs to be done.
2018-07-18 11:27:41 +02:00
Max Kellermann
57729683b6
config/Data: pass new items by rvalue reference
2018-07-18 11:21:59 +02:00
Max Kellermann
9ff2606bb8
config/Data: use std::forward_list to manage params and blocks
2018-07-18 11:03:19 +02:00
Max Kellermann
fd80683ade
decoder/mad: make "gapless_mp3_playback" a block option
...
Remove another dependency on the config/Global library.
2018-07-18 10:50:09 +02:00
Max Kellermann
49efb6071c
config/Migrate: library to migrate deprecated settings
2018-07-18 10:25:02 +02:00
Max Kellermann
8df98932b1
config/Data: add methods AddParam(), AddBlock()
2018-07-18 10:17:45 +02:00
Max Kellermann
95481dda86
config/Global: remove unused function config_get_param()
2018-07-17 23:42:20 +02:00
Max Kellermann
e8a7c6cee3
config/Global: remove unused function config_get_block()
2018-07-17 23:14:47 +02:00
Max Kellermann
60b2338091
config/Global: remove unused function config_get_path()
2018-07-17 22:59:09 +02:00
Max Kellermann
667daab056
config/Global: remove unused function config_get_unsigned()
2018-07-17 22:56:14 +02:00
Max Kellermann
86c531b37d
config/Data: move std::chrono parsers from Global.hxx
2018-07-17 22:53:17 +02:00
Max Kellermann
ffe6819966
config/Global: move value parser code to struct ConfigData
2018-07-17 22:28:08 +02:00
Max Kellermann
8af75c78f8
config/{Global,Block}: throw exception on parser error
2018-07-17 22:23:04 +02:00
Max Kellermann
696add259b
config/Global: remove unused function config_find_block()
2018-07-17 22:15:10 +02:00
Max Kellermann
9fe0585056
config/Global: add GetGlobalConfig()
2018-07-17 22:05:20 +02:00
Max Kellermann
8c366f0774
config/Data: automatic initialization
2018-07-17 22:05:18 +02:00
Max Kellermann
eeaaea802a
config/Data: FindBlock() throws on error
2018-07-17 21:18:18 +02:00
Max Kellermann
15c36baefd
config/Data: add method FindBlock()
2018-07-17 21:16:20 +02:00
Max Kellermann
33deb84aa1
config/Data: make getters const
2018-07-17 21:16:11 +02:00
Max Kellermann
b211d31a64
config/Data: add getter methods
2018-07-17 21:11:52 +02:00
Max Kellermann
5b192beaa5
config/Global: remove ConfigBlock::SetUsed() call, let caller do that
...
This fixes an old bug which caused the "unused" warnings to be
unreliable; only the first block in the list was marked as being
"used", no matter if it was really used, and the rest was never marked
as "used", suppressing all warnings for them.
2018-07-17 21:08:41 +02:00
Max Kellermann
ef38330d74
config/Block: add method SetUsed()
2018-07-17 21:06:15 +02:00
Max Kellermann
987b60ae73
config/Block: make "used" mutable
2018-07-17 21:05:55 +02:00
Max Kellermann
7db0f7c4da
config/Param: remove unused "used" flag
2018-07-17 20:44:07 +02:00
Max Kellermann
a4eeaff63f
config/File: move duplicate code to ExpectValueAndEnd()
2018-07-17 20:28:50 +02:00
Max Kellermann
7807ddae57
config/Param: allow moving the value
2018-07-17 20:27:52 +02:00
Max Kellermann
566af6827e
config/Param: inline the constructor
2018-07-17 20:27:49 +02:00
Max Kellermann
bf046d895e
config/Param: use C++11 initializers
2018-07-17 20:27:47 +02:00
Max Kellermann
af33a9f4b8
config/Block: allow moving name and value
2018-07-17 20:27:46 +02:00
Max Kellermann
e9a4570891
config/Block: use C++11 initializers
2018-07-17 20:16:19 +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
d13a64455c
config/File: use nested exception to annotate file name and line number
2018-07-16 20:00:29 +02:00
Max Kellermann
816603fd9a
config/Config*: rename files, drop "Config" prefix
2018-07-16 19:50:07 +02:00
Max Kellermann
9c6b52ccee
Permission: add special permissions for local sockets
...
Closes #296
2018-07-15 22:27:35 +02:00
Max Kellermann
bbc5212436
fs/AllocatedPath: make the nullptr_t constructor public
2018-01-17 12:17:41 +01:00
Max Kellermann
be65c7d5d0
config/Block: add method GetPositiveValue()
...
Adds missing checks to several plugins.
2018-01-02 17:24:34 +01:00
Max Kellermann
7c5306a841
config/{Block,Global}: add missing strtoul() check
2018-01-02 17:23:10 +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
Max Kellermann
501a4af914
util/StringUtil: move strip functions to StringStrip.cxx
2017-07-05 17:20:02 +02:00
Max Kellermann
a057b4f6d8
*: add lost of "noexcept" specifications
2017-06-04 12:46:48 +02:00
Max Kellermann
788e3b31e1
*: remove "pure" and "const" attributes from throwing functions
...
The "pure" and "const" attributes are not so well-defined, and a
recent clang version implements an optimization which pushes the
definition's boundary beyond what I believed it was. clang now
assumes that functions declared "pure" cannot throw exceptions, even
if they lack the "noexcept" specification.
When compiled with this new clang version, MPD will crash randomly if
an exception happens to get thrown by such as "pure" function
(https://github.com/MusicPlayerDaemon/MPD/issues/41 ).
This commit removes all such misplaced "pure" and "const" attributes,
closing #41 .
2017-05-08 17:25:06 +02:00
Max Kellermann
71f0ed8b74
*: add "noexcept" to many, many function prototypes
...
This eliminates some overhead, because the compiler doesn't need to
consider these functions throwing.
2017-05-08 14:44:49 +02:00
Max Kellermann
5900253b85
update copyright year
2017-01-03 20:48:59 +01:00
Max Kellermann
3413d1bf23
config/Global: add std::chrono::steady_clock::duration overload
2016-12-28 01:12:38 +01:00
Max Kellermann
22dcca9832
util/Error: remove obsolete class
2016-11-10 12:58:26 +01:00
Max Kellermann
4aab97ccb1
config/Path: throw std::runtime_error on error
2016-11-07 09:07:50 +01:00
Max Kellermann
d765182bbb
config/Global: _get_path() throws exception on error
2016-11-02 10:07:57 +01: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
9b5bae049c
config/Param: overload GetPath() throwing exception
2016-10-28 11:53:21 +02:00
Max Kellermann
7a3415166e
config/Param: add method GetPath()
...
Move code from config_parse_path().
2016-10-28 11:45:12 +02:00
Max Kellermann
5b2b4bf13c
config/Param: use CamelCase
2016-10-28 11:38:37 +02:00
Max Kellermann
e4c7e343c8
util/StringUtil: use CamelCase
2016-06-10 22:08:13 +02:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +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
51168169e7
util/Tokenizer: use std::runtime_error on syntax error
2015-12-16 11:34:26 +01:00
Max Kellermann
d256a0e98f
config/ConfigFile: use std::exception on syntax error
2015-12-16 11:13:16 +01:00
Max Kellermann
6717325c3f
config/ConfigFile: use std::unique_ptr
2015-12-16 11:13:16 +01:00
Max Kellermann
c4a0571e7a
config/ConfigFile: fix typo in format string
2015-12-16 11:13:16 +01:00
Max Kellermann
58996b841a
config/Global: allow calling config_get_string() with one argument
...
default_value defaults to nullptr.
2015-06-26 08:06:40 +02:00
Max Kellermann
df03a7b3f8
config/Templates: mark http_proxy_* deprecated
2015-06-26 08:06:40 +02:00
Max Kellermann
d5cfa6d4dc
TagId3: remove the "id3v1_encoding" setting
...
Drop support for misencoded tags. People should not be using ID3v1
anyway.
2015-06-26 00:15:24 +02:00
Max Kellermann
f415167e59
config/Templates: add attribute "deprecated"
2015-06-26 00:11:33 +02:00
Max Kellermann
9477db2363
config/Templates: add constructor with defaulted "repeat" parameter
2015-06-26 00:11:23 +02:00
Max Kellermann
1c90b0c19d
*: change C-style prototypes, drop "(void)"
2015-03-03 20:05:08 +01:00
Max Kellermann
8f2ca8f085
ConfigFile: fix typo (parser breakage)
2015-01-22 19:08:09 +01:00
Max Kellermann
0d3b26b3aa
Config: add section "resampler"
2015-01-22 11:04:28 +01:00
Max Kellermann
e9b49a43e2
config/Block: add method IsEmpty()
2015-01-22 10:20:51 +01:00
Max Kellermann
4fa5538e2b
config/Param: split block-specific attributes to new struct ConfigBlock
...
The old struct config_param remains only for top-level string options.
2015-01-21 23:56:33 +01:00
Max Kellermann
84e74173de
config/File: move code to ReadConfigParam()
2015-01-21 23:51:04 +01:00
Max Kellermann
6cdb2a4896
fs/io/BufferedReader: count line numbers
...
Replaces the dirty code in config/ConfigFile.cxx.
2015-01-21 23:43:32 +01:00
Max Kellermann
d8bef3270d
config/File: use FileReader/BufferedReader instead of stdio
2015-01-21 23:36:57 +01:00
Max Kellermann
a33db8fe6f
config/Data: assign nullptr during iteration
2015-01-21 23:30:00 +01:00
Max Kellermann
1c3f5517fa
config/Option: convert to strictly-typed enum
2015-01-21 23:30:00 +01:00
Max Kellermann
a38f02541d
config/Param: make "line" signed
2015-01-21 22:19:36 +01:00
Max Kellermann
fdba76ba47
ConfigFile: convert macros to constexpr
2015-01-21 22:12:16 +01:00
Max Kellermann
f900ab0121
config/Data: add method Clear()
...
Move code from config_global_finish().
2015-01-21 21:50:02 +01:00
Max Kellermann
f80ab6a7a2
ConfigData: rename header file
2015-01-21 21:49:09 +01:00