Commit 1c3f5517 authored by Max Kellermann's avatar Max Kellermann

config/Option: convert to strictly-typed enum

parent 10972da0
...@@ -39,7 +39,7 @@ getOutputAudioFormat(AudioFormat inAudioFormat) ...@@ -39,7 +39,7 @@ getOutputAudioFormat(AudioFormat inAudioFormat)
void initAudioConfig(void) void initAudioConfig(void)
{ {
const struct config_param *param = config_get_param(CONF_AUDIO_OUTPUT_FORMAT); const struct config_param *param = config_get_param(ConfigOption::AUDIO_OUTPUT_FORMAT);
if (param == nullptr) if (param == nullptr)
return; return;
......
...@@ -103,9 +103,9 @@ listen_systemd_activation(Error &error_r) ...@@ -103,9 +103,9 @@ listen_systemd_activation(Error &error_r)
bool bool
listen_global_init(EventLoop &loop, Partition &partition, Error &error) listen_global_init(EventLoop &loop, Partition &partition, Error &error)
{ {
int port = config_get_positive(CONF_PORT, DEFAULT_PORT); int port = config_get_positive(ConfigOption::PORT, DEFAULT_PORT);
const struct config_param *param = const struct config_param *param =
config_get_param(CONF_BIND_TO_ADDRESS); config_get_param(ConfigOption::BIND_TO_ADDRESS);
listen_socket = new ClientListener(loop, partition); listen_socket = new ClientListener(loop, partition);
......
...@@ -139,14 +139,14 @@ log_init(bool verbose, bool use_stdout, Error &error) ...@@ -139,14 +139,14 @@ log_init(bool verbose, bool use_stdout, Error &error)
if (verbose) if (verbose)
SetLogThreshold(LogLevel::DEBUG); SetLogThreshold(LogLevel::DEBUG);
else if ((param = config_get_param(CONF_LOG_LEVEL)) != nullptr) else if ((param = config_get_param(ConfigOption::LOG_LEVEL)) != nullptr)
SetLogThreshold(parse_log_level(param->value.c_str(), SetLogThreshold(parse_log_level(param->value.c_str(),
param->line)); param->line));
if (use_stdout) { if (use_stdout) {
return true; return true;
} else { } else {
param = config_get_param(CONF_LOG_FILE); param = config_get_param(ConfigOption::LOG_FILE);
if (param == nullptr) { if (param == nullptr) {
#ifdef HAVE_SYSLOG #ifdef HAVE_SYSLOG
/* no configuration: default to syslog (if /* no configuration: default to syslog (if
...@@ -164,7 +164,7 @@ log_init(bool verbose, bool use_stdout, Error &error) ...@@ -164,7 +164,7 @@ log_init(bool verbose, bool use_stdout, Error &error)
return true; return true;
#endif #endif
} else { } else {
out_path = config_get_path(CONF_LOG_FILE, error); out_path = config_get_path(ConfigOption::LOG_FILE, error);
return !out_path.IsNull() && return !out_path.IsNull() &&
log_init_file(param->line, error); log_init_file(param->line, error);
} }
......
...@@ -141,12 +141,12 @@ static StateFile *state_file; ...@@ -141,12 +141,12 @@ static StateFile *state_file;
static bool static bool
glue_daemonize_init(const struct options *options, Error &error) glue_daemonize_init(const struct options *options, Error &error)
{ {
auto pid_file = config_get_path(CONF_PID_FILE, error); auto pid_file = config_get_path(ConfigOption::PID_FILE, error);
if (pid_file.IsNull() && error.IsDefined()) if (pid_file.IsNull() && error.IsDefined())
return false; return false;
daemonize_init(config_get_string(CONF_USER, nullptr), daemonize_init(config_get_string(ConfigOption::USER, nullptr),
config_get_string(CONF_GROUP, nullptr), config_get_string(ConfigOption::GROUP, nullptr),
std::move(pid_file)); std::move(pid_file));
if (options->kill) if (options->kill)
...@@ -160,7 +160,7 @@ glue_daemonize_init(const struct options *options, Error &error) ...@@ -160,7 +160,7 @@ glue_daemonize_init(const struct options *options, Error &error)
static bool static bool
glue_mapper_init(Error &error) glue_mapper_init(Error &error)
{ {
auto playlist_dir = config_get_path(CONF_PLAYLIST_DIR, error); auto playlist_dir = config_get_path(ConfigOption::PLAYLIST_DIR, error);
if (playlist_dir.IsNull() && error.IsDefined()) if (playlist_dir.IsNull() && error.IsDefined())
return false; return false;
...@@ -255,7 +255,7 @@ glue_sticker_init(void) ...@@ -255,7 +255,7 @@ glue_sticker_init(void)
{ {
#ifdef ENABLE_SQLITE #ifdef ENABLE_SQLITE
Error error; Error error;
auto sticker_file = config_get_path(CONF_STICKER_FILE, error); auto sticker_file = config_get_path(ConfigOption::STICKER_FILE, error);
if (sticker_file.IsNull()) { if (sticker_file.IsNull()) {
if (error.IsDefined()) if (error.IsDefined())
FatalError(error); FatalError(error);
...@@ -270,7 +270,7 @@ glue_sticker_init(void) ...@@ -270,7 +270,7 @@ glue_sticker_init(void)
static bool static bool
glue_state_file_init(Error &error) glue_state_file_init(Error &error)
{ {
auto path_fs = config_get_path(CONF_STATE_FILE, error); auto path_fs = config_get_path(ConfigOption::STATE_FILE, error);
if (path_fs.IsNull()) { if (path_fs.IsNull()) {
if (error.IsDefined()) if (error.IsDefined())
return false; return false;
...@@ -286,8 +286,9 @@ glue_state_file_init(Error &error) ...@@ -286,8 +286,9 @@ glue_state_file_init(Error &error)
#endif #endif
} }
unsigned interval = config_get_unsigned(CONF_STATE_FILE_INTERVAL, const unsigned interval =
StateFile::DEFAULT_INTERVAL); config_get_unsigned(ConfigOption::STATE_FILE_INTERVAL,
StateFile::DEFAULT_INTERVAL);
state_file = new StateFile(std::move(path_fs), interval, state_file = new StateFile(std::move(path_fs), interval,
*instance->partition, *instance->partition,
...@@ -324,7 +325,7 @@ initialize_decoder_and_player(void) ...@@ -324,7 +325,7 @@ initialize_decoder_and_player(void)
const struct config_param *param; const struct config_param *param;
size_t buffer_size; size_t buffer_size;
param = config_get_param(CONF_AUDIO_BUFFER_SIZE); param = config_get_param(ConfigOption::AUDIO_BUFFER_SIZE);
if (param != nullptr) { if (param != nullptr) {
char *test; char *test;
long tmp = strtol(param->value.c_str(), &test, 10); long tmp = strtol(param->value.c_str(), &test, 10);
...@@ -345,7 +346,7 @@ initialize_decoder_and_player(void) ...@@ -345,7 +346,7 @@ initialize_decoder_and_player(void)
(unsigned long)buffer_size); (unsigned long)buffer_size);
float perc; float perc;
param = config_get_param(CONF_BUFFER_BEFORE_PLAY); param = config_get_param(ConfigOption::BUFFER_BEFORE_PLAY);
if (param != nullptr) { if (param != nullptr) {
char *test; char *test;
perc = strtod(param->value.c_str(), &test); perc = strtod(param->value.c_str(), &test);
...@@ -363,7 +364,7 @@ initialize_decoder_and_player(void) ...@@ -363,7 +364,7 @@ initialize_decoder_and_player(void)
buffered_before_play = buffered_chunks; buffered_before_play = buffered_chunks;
const unsigned max_length = const unsigned max_length =
config_get_positive(CONF_MAX_PLAYLIST_LENGTH, config_get_positive(ConfigOption::MAX_PLAYLIST_LENGTH,
DEFAULT_PLAYLIST_MAX_LENGTH); DEFAULT_PLAYLIST_MAX_LENGTH);
instance->partition = new Partition(*instance, instance->partition = new Partition(*instance,
...@@ -503,7 +504,8 @@ int mpd_main(int argc, char *argv[]) ...@@ -503,7 +504,8 @@ int mpd_main(int argc, char *argv[])
} }
#endif #endif
const unsigned max_clients = config_get_positive(CONF_MAX_CONN, 10); const unsigned max_clients =
config_get_positive(ConfigOption::MAX_CONN, 10);
instance->client_list = new ClientList(max_clients); instance->client_list = new ClientList(max_clients);
initialize_decoder_and_player(); initialize_decoder_and_player();
...@@ -630,14 +632,14 @@ static int mpd_main_after_fork(struct options options) ...@@ -630,14 +632,14 @@ static int mpd_main_after_fork(struct options options)
instance->partition->outputs.SetReplayGainMode(replay_gain_get_real_mode(instance->partition->playlist.queue.random)); instance->partition->outputs.SetReplayGainMode(replay_gain_get_real_mode(instance->partition->playlist.queue.random));
#ifdef ENABLE_DATABASE #ifdef ENABLE_DATABASE
if (config_get_bool(CONF_AUTO_UPDATE, false)) { if (config_get_bool(ConfigOption::AUTO_UPDATE, false)) {
#ifdef ENABLE_INOTIFY #ifdef ENABLE_INOTIFY
if (instance->storage != nullptr && if (instance->storage != nullptr &&
instance->update != nullptr) instance->update != nullptr)
mpd_inotify_init(*instance->event_loop, mpd_inotify_init(*instance->event_loop,
*instance->storage, *instance->storage,
*instance->update, *instance->update,
config_get_unsigned(CONF_AUTO_UPDATE_DEPTH, config_get_unsigned(ConfigOption::AUTO_UPDATE_DEPTH,
INT_MAX)); INT_MAX));
#else #else
FormatWarning(main_domain, FormatWarning(main_domain,
......
...@@ -92,7 +92,7 @@ void initPermissions(void) ...@@ -92,7 +92,7 @@ void initPermissions(void)
permission_default = PERMISSION_READ | PERMISSION_ADD | permission_default = PERMISSION_READ | PERMISSION_ADD |
PERMISSION_CONTROL | PERMISSION_ADMIN; PERMISSION_CONTROL | PERMISSION_ADMIN;
param = config_get_param(CONF_PASSWORD); param = config_get_param(ConfigOption::PASSWORD);
if (param) { if (param) {
permission_default = 0; permission_default = 0;
...@@ -118,7 +118,7 @@ void initPermissions(void) ...@@ -118,7 +118,7 @@ void initPermissions(void)
} while ((param = param->next) != nullptr); } while ((param = param->next) != nullptr);
} }
param = config_get_param(CONF_DEFAULT_PERMS); param = config_get_param(ConfigOption::DEFAULT_PERMS);
if (param) if (param)
permission_default = parsePermissions(param->value.c_str()); permission_default = parsePermissions(param->value.c_str());
......
...@@ -53,11 +53,12 @@ bool playlist_saveAbsolutePaths = DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS; ...@@ -53,11 +53,12 @@ bool playlist_saveAbsolutePaths = DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS;
void void
spl_global_init(void) spl_global_init(void)
{ {
playlist_max_length = config_get_positive(CONF_MAX_PLAYLIST_LENGTH, playlist_max_length =
DEFAULT_PLAYLIST_MAX_LENGTH); config_get_positive(ConfigOption::MAX_PLAYLIST_LENGTH,
DEFAULT_PLAYLIST_MAX_LENGTH);
playlist_saveAbsolutePaths = playlist_saveAbsolutePaths =
config_get_bool(CONF_SAVE_ABSOLUTE_PATHS, config_get_bool(ConfigOption::SAVE_ABSOLUTE_PATHS,
DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS); DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS);
} }
......
...@@ -81,7 +81,8 @@ replay_gain_set_mode_string(const char *p) ...@@ -81,7 +81,8 @@ replay_gain_set_mode_string(const char *p)
void replay_gain_global_init(void) void replay_gain_global_init(void)
{ {
const struct config_param *param = config_get_param(CONF_REPLAYGAIN); const struct config_param *param =
config_get_param(ConfigOption::REPLAYGAIN);
if (param != nullptr && if (param != nullptr &&
!replay_gain_set_mode_string(param->value.c_str())) { !replay_gain_set_mode_string(param->value.c_str())) {
...@@ -89,7 +90,7 @@ void replay_gain_global_init(void) ...@@ -89,7 +90,7 @@ void replay_gain_global_init(void)
param->value.c_str(), param->line); param->value.c_str(), param->line);
} }
param = config_get_param(CONF_REPLAYGAIN_PREAMP); param = config_get_param(ConfigOption::REPLAYGAIN_PREAMP);
if (param) { if (param) {
char *test; char *test;
...@@ -110,7 +111,7 @@ void replay_gain_global_init(void) ...@@ -110,7 +111,7 @@ void replay_gain_global_init(void)
replay_gain_preamp = pow(10, f / 20.0); replay_gain_preamp = pow(10, f / 20.0);
} }
param = config_get_param(CONF_REPLAYGAIN_MISSING_PREAMP); param = config_get_param(ConfigOption::REPLAYGAIN_MISSING_PREAMP);
if (param) { if (param) {
char *test; char *test;
...@@ -131,7 +132,8 @@ void replay_gain_global_init(void) ...@@ -131,7 +132,8 @@ void replay_gain_global_init(void)
replay_gain_missing_preamp = pow(10, f / 20.0); replay_gain_missing_preamp = pow(10, f / 20.0);
} }
replay_gain_limit = config_get_bool(CONF_REPLAYGAIN_LIMIT, DEFAULT_REPLAYGAIN_LIMIT); replay_gain_limit = config_get_bool(ConfigOption::REPLAYGAIN_LIMIT,
DEFAULT_REPLAYGAIN_LIMIT);
} }
ReplayGainMode ReplayGainMode
......
...@@ -31,15 +31,15 @@ size_t client_max_output_buffer_size; ...@@ -31,15 +31,15 @@ size_t client_max_output_buffer_size;
void client_manager_init(void) void client_manager_init(void)
{ {
client_timeout = config_get_positive(CONF_CONN_TIMEOUT, client_timeout = config_get_positive(ConfigOption::CONN_TIMEOUT,
CLIENT_TIMEOUT_DEFAULT); CLIENT_TIMEOUT_DEFAULT);
client_max_command_list_size = client_max_command_list_size =
config_get_positive(CONF_MAX_COMMAND_LIST_SIZE, config_get_positive(ConfigOption::MAX_COMMAND_LIST_SIZE,
CLIENT_MAX_COMMAND_LIST_DEFAULT / 1024) CLIENT_MAX_COMMAND_LIST_DEFAULT / 1024)
* 1024; * 1024;
client_max_output_buffer_size = client_max_output_buffer_size =
config_get_positive(CONF_MAX_OUTPUT_BUFFER_SIZE, config_get_positive(ConfigOption::MAX_OUTPUT_BUFFER_SIZE,
CLIENT_MAX_OUTPUT_BUFFER_SIZE_DEFAULT / 1024) CLIENT_MAX_OUTPUT_BUFFER_SIZE_DEFAULT / 1024)
* 1024; * 1024;
} }
...@@ -175,7 +175,7 @@ ReadConfigFile(ConfigData &config_data, FILE *fp, Error &error) ...@@ -175,7 +175,7 @@ ReadConfigFile(ConfigData &config_data, FILE *fp, Error &error)
"repeatable" flag */ "repeatable" flag */
const ConfigOption o = ParseConfigOptionName(name); const ConfigOption o = ParseConfigOptionName(name);
if (o == CONF_MAX) { if (o == ConfigOption::MAX) {
error.Format(config_file_domain, error.Format(config_file_domain,
"unrecognized parameter in config file at " "unrecognized parameter in config file at "
"line %i: %s\n", count, name); "line %i: %s\n", count, name);
......
...@@ -22,68 +22,78 @@ ...@@ -22,68 +22,78 @@
#include "Compiler.h" #include "Compiler.h"
enum ConfigOption { #if defined(WIN32) && CLANG_OR_GCC_VERSION(4,7)
CONF_MUSIC_DIR, /* "INPUT" is declared by winuser.h */
CONF_PLAYLIST_DIR, #pragma GCC diagnostic push
CONF_FOLLOW_INSIDE_SYMLINKS, #pragma GCC diagnostic ignored "-Wshadow"
CONF_FOLLOW_OUTSIDE_SYMLINKS, #endif
CONF_DB_FILE,
CONF_STICKER_FILE, enum class ConfigOption {
CONF_LOG_FILE, MUSIC_DIR,
CONF_PID_FILE, PLAYLIST_DIR,
CONF_STATE_FILE, FOLLOW_INSIDE_SYMLINKS,
CONF_STATE_FILE_INTERVAL, FOLLOW_OUTSIDE_SYMLINKS,
CONF_RESTORE_PAUSED, DB_FILE,
CONF_USER, STICKER_FILE,
CONF_GROUP, LOG_FILE,
CONF_BIND_TO_ADDRESS, PID_FILE,
CONF_PORT, STATE_FILE,
CONF_LOG_LEVEL, STATE_FILE_INTERVAL,
CONF_ZEROCONF_NAME, RESTORE_PAUSED,
CONF_ZEROCONF_ENABLED, USER,
CONF_PASSWORD, GROUP,
CONF_DEFAULT_PERMS, BIND_TO_ADDRESS,
CONF_AUDIO_OUTPUT, PORT,
CONF_AUDIO_OUTPUT_FORMAT, LOG_LEVEL,
CONF_MIXER_TYPE, ZEROCONF_NAME,
CONF_REPLAYGAIN, ZEROCONF_ENABLED,
CONF_REPLAYGAIN_PREAMP, PASSWORD,
CONF_REPLAYGAIN_MISSING_PREAMP, DEFAULT_PERMS,
CONF_REPLAYGAIN_LIMIT, AUDIO_OUTPUT,
CONF_VOLUME_NORMALIZATION, AUDIO_OUTPUT_FORMAT,
CONF_SAMPLERATE_CONVERTER, MIXER_TYPE,
CONF_AUDIO_BUFFER_SIZE, REPLAYGAIN,
CONF_BUFFER_BEFORE_PLAY, REPLAYGAIN_PREAMP,
CONF_HTTP_PROXY_HOST, REPLAYGAIN_MISSING_PREAMP,
CONF_HTTP_PROXY_PORT, REPLAYGAIN_LIMIT,
CONF_HTTP_PROXY_USER, VOLUME_NORMALIZATION,
CONF_HTTP_PROXY_PASSWORD, SAMPLERATE_CONVERTER,
CONF_CONN_TIMEOUT, AUDIO_BUFFER_SIZE,
CONF_MAX_CONN, BUFFER_BEFORE_PLAY,
CONF_MAX_PLAYLIST_LENGTH, HTTP_PROXY_HOST,
CONF_MAX_COMMAND_LIST_SIZE, HTTP_PROXY_PORT,
CONF_MAX_OUTPUT_BUFFER_SIZE, HTTP_PROXY_USER,
CONF_FS_CHARSET, HTTP_PROXY_PASSWORD,
CONF_ID3V1_ENCODING, CONN_TIMEOUT,
CONF_METADATA_TO_USE, MAX_CONN,
CONF_SAVE_ABSOLUTE_PATHS, MAX_PLAYLIST_LENGTH,
CONF_DECODER, MAX_COMMAND_LIST_SIZE,
CONF_INPUT, MAX_OUTPUT_BUFFER_SIZE,
CONF_GAPLESS_MP3_PLAYBACK, FS_CHARSET,
CONF_PLAYLIST_PLUGIN, ID3V1_ENCODING,
CONF_AUTO_UPDATE, METADATA_TO_USE,
CONF_AUTO_UPDATE_DEPTH, SAVE_ABSOLUTE_PATHS,
CONF_DESPOTIFY_USER, DECODER,
CONF_DESPOTIFY_PASSWORD, INPUT,
CONF_DESPOTIFY_HIGH_BITRATE, GAPLESS_MP3_PLAYBACK,
CONF_AUDIO_FILTER, PLAYLIST_PLUGIN,
CONF_DATABASE, AUTO_UPDATE,
CONF_NEIGHBORS, AUTO_UPDATE_DEPTH,
CONF_MAX DESPOTIFY_USER,
DESPOTIFY_PASSWORD,
DESPOTIFY_HIGH_BITRATE,
AUDIO_FILTER,
DATABASE,
NEIGHBORS,
MAX
}; };
#if defined(WIN32) && CLANG_OR_GCC_VERSION(4,7)
#pragma GCC diagnostic pop
#endif
/** /**
* @return #CONF_MAX if not found * @return #ConfigOption::MAX if not found
*/ */
gcc_pure gcc_pure
enum ConfigOption enum ConfigOption
......
...@@ -70,7 +70,7 @@ GetHome(Error &error) ...@@ -70,7 +70,7 @@ GetHome(Error &error)
static AllocatedPath static AllocatedPath
GetConfiguredHome(Error &error) GetConfiguredHome(Error &error)
{ {
const char *user = config_get_string(CONF_USER, nullptr); const char *user = config_get_string(ConfigOption::USER, nullptr);
return user != nullptr return user != nullptr
? GetHome(user, error) ? GetHome(user, error)
: GetHome(error); : GetHome(error);
......
...@@ -84,7 +84,7 @@ const ConfigTemplate config_templates[] = { ...@@ -84,7 +84,7 @@ const ConfigTemplate config_templates[] = {
static constexpr unsigned n_config_templates = ARRAY_SIZE(config_templates); static constexpr unsigned n_config_templates = ARRAY_SIZE(config_templates);
static_assert(n_config_templates == unsigned(CONF_MAX), static_assert(n_config_templates == unsigned(ConfigOption::MAX),
"Wrong number of config_templates"); "Wrong number of config_templates");
ConfigOption ConfigOption
...@@ -94,5 +94,5 @@ ParseConfigOptionName(const char *name) ...@@ -94,5 +94,5 @@ ParseConfigOptionName(const char *name)
if (strcmp(config_templates[i].name, name) == 0) if (strcmp(config_templates[i].name, name) == 0)
return ConfigOption(i); return ConfigOption(i);
return CONF_MAX; return ConfigOption::MAX;
} }
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
struct config_param; struct config_param;
struct ConfigData { struct ConfigData {
std::array<config_param *, std::size_t(CONF_MAX)> params; std::array<config_param *, std::size_t(ConfigOption::MAX)> params;
void Clear(); void Clear();
}; };
......
...@@ -32,8 +32,8 @@ Database * ...@@ -32,8 +32,8 @@ Database *
CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener, CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
Error &error) Error &error)
{ {
const struct config_param *param = config_get_param(CONF_DATABASE); const auto *param = config_get_param(ConfigOption::DATABASE);
const struct config_param *path = config_get_param(CONF_DB_FILE); const auto *path = config_get_param(ConfigOption::DB_FILE);
if (param != nullptr && path != nullptr) { if (param != nullptr && path != nullptr) {
error.Format(config_domain, error.Format(config_domain,
......
...@@ -57,11 +57,11 @@ UpdateWalk::UpdateWalk(EventLoop &_loop, DatabaseListener &_listener, ...@@ -57,11 +57,11 @@ UpdateWalk::UpdateWalk(EventLoop &_loop, DatabaseListener &_listener,
{ {
#ifndef WIN32 #ifndef WIN32
follow_inside_symlinks = follow_inside_symlinks =
config_get_bool(CONF_FOLLOW_INSIDE_SYMLINKS, config_get_bool(ConfigOption::FOLLOW_INSIDE_SYMLINKS,
DEFAULT_FOLLOW_INSIDE_SYMLINKS); DEFAULT_FOLLOW_INSIDE_SYMLINKS);
follow_outside_symlinks = follow_outside_symlinks =
config_get_bool(CONF_FOLLOW_OUTSIDE_SYMLINKS, config_get_bool(ConfigOption::FOLLOW_OUTSIDE_SYMLINKS,
DEFAULT_FOLLOW_OUTSIDE_SYMLINKS); DEFAULT_FOLLOW_OUTSIDE_SYMLINKS);
#endif #endif
} }
......
...@@ -132,7 +132,8 @@ void decoder_plugin_init_all(void) ...@@ -132,7 +132,8 @@ void decoder_plugin_init_all(void)
for (unsigned i = 0; decoder_plugins[i] != nullptr; ++i) { for (unsigned i = 0; decoder_plugins[i] != nullptr; ++i) {
const DecoderPlugin &plugin = *decoder_plugins[i]; const DecoderPlugin &plugin = *decoder_plugins[i];
const struct config_param *param = const struct config_param *param =
config_find_block(CONF_DECODER, "plugin", plugin.name); config_find_block(ConfigOption::DECODER, "plugin",
plugin.name);
if (param == nullptr) if (param == nullptr)
param = &empty; param = &empty;
......
...@@ -109,7 +109,7 @@ mad_fixed_to_24_buffer(int32_t *dest, const struct mad_synth *synth, ...@@ -109,7 +109,7 @@ mad_fixed_to_24_buffer(int32_t *dest, const struct mad_synth *synth,
static bool static bool
mp3_plugin_init(gcc_unused const config_param &param) mp3_plugin_init(gcc_unused const config_param &param)
{ {
gapless_playback = config_get_bool(CONF_GAPLESS_MP3_PLAYBACK, gapless_playback = config_get_bool(ConfigOption::GAPLESS_MP3_PLAYBACK,
DEFAULT_GAPLESS_MP3_PLAYBACK); DEFAULT_GAPLESS_MP3_PLAYBACK);
return true; return true;
} }
......
...@@ -35,7 +35,8 @@ static bool ...@@ -35,7 +35,8 @@ static bool
filter_chain_append_new(Filter &chain, const char *template_name, Error &error) filter_chain_append_new(Filter &chain, const char *template_name, Error &error)
{ {
const struct config_param *cfg = const struct config_param *cfg =
config_find_block(CONF_AUDIO_FILTER, "name", template_name); config_find_block(ConfigOption::AUDIO_FILTER, "name",
template_name);
if (cfg == nullptr) { if (cfg == nullptr) {
error.Format(config_domain, error.Format(config_domain,
"filter template not found: %s", "filter template not found: %s",
......
...@@ -35,7 +35,7 @@ ConfigureFS(Error &error) ...@@ -35,7 +35,7 @@ ConfigureFS(Error &error)
#ifdef HAVE_FS_CHARSET #ifdef HAVE_FS_CHARSET
const char *charset = nullptr; const char *charset = nullptr;
charset = config_get_string(CONF_FS_CHARSET, nullptr); charset = config_get_string(ConfigOption::FS_CHARSET, nullptr);
if (charset == nullptr) { if (charset == nullptr) {
#ifdef WIN32 #ifdef WIN32
/* Glib claims that file system encoding is always utf-8 /* Glib claims that file system encoding is always utf-8
......
...@@ -43,7 +43,8 @@ input_stream_global_init(Error &error) ...@@ -43,7 +43,8 @@ input_stream_global_init(Error &error)
assert(plugin->open != nullptr); assert(plugin->open != nullptr);
const struct config_param *param = const struct config_param *param =
config_find_block(CONF_INPUT, "plugin", plugin->name); config_find_block(ConfigOption::INPUT, "plugin",
plugin->name);
if (param == nullptr) { if (param == nullptr) {
param = &empty; param = &empty;
} else if (!param->GetBlockValue("enabled", true)) } else if (!param->GetBlockValue("enabled", true))
......
...@@ -564,10 +564,10 @@ input_curl_init(const config_param &param, Error &error) ...@@ -564,10 +564,10 @@ input_curl_init(const config_param &param, Error &error)
if (proxy == nullptr) { if (proxy == nullptr) {
/* deprecated proxy configuration */ /* deprecated proxy configuration */
proxy = config_get_string(CONF_HTTP_PROXY_HOST, nullptr); proxy = config_get_string(ConfigOption::HTTP_PROXY_HOST, nullptr);
proxy_port = config_get_positive(CONF_HTTP_PROXY_PORT, 0); proxy_port = config_get_positive(ConfigOption::HTTP_PROXY_PORT, 0);
proxy_user = config_get_string(CONF_HTTP_PROXY_USER, nullptr); proxy_user = config_get_string(ConfigOption::HTTP_PROXY_USER, nullptr);
proxy_password = config_get_string(CONF_HTTP_PROXY_PASSWORD, proxy_password = config_get_string(ConfigOption::HTTP_PROXY_PASSWORD,
""); "");
} }
......
...@@ -124,9 +124,9 @@ mpd_despotify_get_session() ...@@ -124,9 +124,9 @@ mpd_despotify_get_session()
return g_session; return g_session;
const char *const user = const char *const user =
config_get_string(CONF_DESPOTIFY_USER, nullptr); config_get_string(ConfigOption::DESPOTIFY_USER, nullptr);
const char *const passwd = const char *const passwd =
config_get_string(CONF_DESPOTIFY_PASSWORD, nullptr); config_get_string(ConfigOption::DESPOTIFY_PASSWORD, nullptr);
if (user == nullptr || passwd == nullptr) { if (user == nullptr || passwd == nullptr) {
LogDebug(despotify_domain, LogDebug(despotify_domain,
...@@ -140,7 +140,7 @@ mpd_despotify_get_session() ...@@ -140,7 +140,7 @@ mpd_despotify_get_session()
} }
const bool high_bitrate = const bool high_bitrate =
config_get_bool(CONF_DESPOTIFY_HIGH_BITRATE, true); config_get_bool(ConfigOption::DESPOTIFY_HIGH_BITRATE, true);
g_session = despotify_init_client(callback, nullptr, g_session = despotify_init_client(callback, nullptr,
high_bitrate, true); high_bitrate, true);
if (!g_session) { if (!g_session) {
......
...@@ -59,7 +59,7 @@ CreateNeighborExplorer(EventLoop &loop, NeighborListener &listener, ...@@ -59,7 +59,7 @@ CreateNeighborExplorer(EventLoop &loop, NeighborListener &listener,
bool bool
NeighborGlue::Init(EventLoop &loop, NeighborListener &listener, Error &error) NeighborGlue::Init(EventLoop &loop, NeighborListener &listener, Error &error)
{ {
for (const config_param *param = config_get_param(CONF_NEIGHBORS); for (const auto *param = config_get_param(ConfigOption::NEIGHBORS);
param != nullptr; param = param->next) { param != nullptr; param = param->next) {
NeighborExplorer *explorer = NeighborExplorer *explorer =
CreateNeighborExplorer(loop, listener, *param, error); CreateNeighborExplorer(loop, listener, *param, error);
......
...@@ -108,7 +108,7 @@ audio_output_mixer_type(const config_param &param) ...@@ -108,7 +108,7 @@ audio_output_mixer_type(const config_param &param)
/* fall back to the global "mixer_type" setting (also /* fall back to the global "mixer_type" setting (also
deprecated) */ deprecated) */
return mixer_type_parse(config_get_string(CONF_MIXER_TYPE, return mixer_type_parse(config_get_string(ConfigOption::MIXER_TYPE,
"hardware")); "hardware"));
} }
...@@ -191,7 +191,7 @@ AudioOutput::Configure(const config_param &param, Error &error) ...@@ -191,7 +191,7 @@ AudioOutput::Configure(const config_param &param, Error &error)
/* create the normalization filter (if configured) */ /* create the normalization filter (if configured) */
if (config_get_bool(CONF_VOLUME_NORMALIZATION, false)) { if (config_get_bool(ConfigOption::VOLUME_NORMALIZATION, false)) {
Filter *normalize_filter = Filter *normalize_filter =
filter_new(&normalize_filter_plugin, config_param(), filter_new(&normalize_filter_plugin, config_param(),
IgnoreError()); IgnoreError());
......
...@@ -74,7 +74,7 @@ LoadOutput(EventLoop &event_loop, MixerListener &mixer_listener, ...@@ -74,7 +74,7 @@ LoadOutput(EventLoop &event_loop, MixerListener &mixer_listener,
void void
MultipleOutputs::Configure(EventLoop &event_loop, PlayerControl &pc) MultipleOutputs::Configure(EventLoop &event_loop, PlayerControl &pc)
{ {
for (const config_param *param = config_get_param(CONF_AUDIO_OUTPUT); for (const auto *param = config_get_param(ConfigOption::AUDIO_OUTPUT);
param != nullptr; param = param->next) { param != nullptr; param = param->next) {
auto output = LoadOutput(event_loop, mixer_listener, auto output = LoadOutput(event_loop, mixer_listener,
pc, *param); pc, *param);
......
...@@ -53,7 +53,7 @@ bool ...@@ -53,7 +53,7 @@ bool
pcm_resampler_global_init(Error &error) pcm_resampler_global_init(Error &error)
{ {
const char *converter = const char *converter =
config_get_string(CONF_SAMPLERATE_CONVERTER, ""); config_get_string(ConfigOption::SAMPLERATE_CONVERTER, "");
if (strcmp(converter, "internal") == 0) if (strcmp(converter, "internal") == 0)
return true; return true;
......
...@@ -81,9 +81,9 @@ playlist_list_global_init(void) ...@@ -81,9 +81,9 @@ playlist_list_global_init(void)
for (unsigned i = 0; playlist_plugins[i] != nullptr; ++i) { for (unsigned i = 0; playlist_plugins[i] != nullptr; ++i) {
const struct playlist_plugin *plugin = playlist_plugins[i]; const struct playlist_plugin *plugin = playlist_plugins[i];
const struct config_param *param = const auto *param =
config_find_block(CONF_PLAYLIST_PLUGIN, "name", config_find_block(ConfigOption::PLAYLIST_PLUGIN,
plugin->name); "name", plugin->name);
if (param == nullptr) if (param == nullptr)
param = &empty; param = &empty;
else if (!param->GetBlockValue("enabled", true)) else if (!param->GetBlockValue("enabled", true))
......
...@@ -195,7 +195,7 @@ playlist_state_restore(const char *line, TextFile &file, ...@@ -195,7 +195,7 @@ playlist_state_restore(const char *line, TextFile &file,
current = 0; current = 0;
if (state == PlayerState::PLAY && if (state == PlayerState::PLAY &&
config_get_bool(CONF_RESTORE_PAUSED, false)) config_get_bool(ConfigOption::RESTORE_PAUSED, false))
/* the user doesn't want MPD to auto-start /* the user doesn't want MPD to auto-start
playback after startup; fall back to playback after startup; fall back to
"pause" */ "pause" */
......
...@@ -44,7 +44,7 @@ CreateConfiguredStorageUri(EventLoop &event_loop, const char *uri, ...@@ -44,7 +44,7 @@ CreateConfiguredStorageUri(EventLoop &event_loop, const char *uri,
static AllocatedPath static AllocatedPath
GetConfiguredMusicDirectory(Error &error) GetConfiguredMusicDirectory(Error &error)
{ {
AllocatedPath path = config_get_path(CONF_MUSIC_DIR, error); AllocatedPath path = config_get_path(ConfigOption::MUSIC_DIR, error);
if (path.IsNull() && !error.IsDefined()) if (path.IsNull() && !error.IsDefined())
path = GetUserMusicDir(); path = GetUserMusicDir();
...@@ -68,7 +68,7 @@ CreateConfiguredStorage(EventLoop &event_loop, Error &error) ...@@ -68,7 +68,7 @@ CreateConfiguredStorage(EventLoop &event_loop, Error &error)
{ {
assert(!error.IsDefined()); assert(!error.IsDefined());
auto uri = config_get_string(CONF_MUSIC_DIR, nullptr); auto uri = config_get_string(ConfigOption::MUSIC_DIR, nullptr);
if (uri != nullptr && uri_has_scheme(uri)) if (uri != nullptr && uri_has_scheme(uri))
return CreateConfiguredStorageUri(event_loop, uri, error); return CreateConfiguredStorageUri(event_loop, uri, error);
...@@ -78,5 +78,5 @@ CreateConfiguredStorage(EventLoop &event_loop, Error &error) ...@@ -78,5 +78,5 @@ CreateConfiguredStorage(EventLoop &event_loop, Error &error)
bool bool
IsStorageConfigured() IsStorageConfigured()
{ {
return config_get_string(CONF_MUSIC_DIR, nullptr) != nullptr; return config_get_string(ConfigOption::MUSIC_DIR, nullptr) != nullptr;
} }
...@@ -35,7 +35,8 @@ ...@@ -35,7 +35,8 @@
void void
TagLoadConfig() TagLoadConfig()
{ {
const char *value = config_get_string(CONF_METADATA_TO_USE, nullptr); const char *value = config_get_string(ConfigOption::METADATA_TO_USE,
nullptr);
if (value == nullptr) if (value == nullptr)
return; return;
......
...@@ -99,7 +99,8 @@ import_id3_string(bool is_id3v1, const id3_ucs4_t *ucs4) ...@@ -99,7 +99,8 @@ import_id3_string(bool is_id3v1, const id3_ucs4_t *ucs4)
/* use encoding field here? */ /* use encoding field here? */
const char *encoding; const char *encoding;
if (is_id3v1 && if (is_id3v1 &&
(encoding = config_get_string(CONF_ID3V1_ENCODING, nullptr)) != nullptr) { (encoding = config_get_string(ConfigOption::ID3V1_ENCODING,
nullptr)) != nullptr) {
id3_latin1_t *isostr = id3_ucs4_latin1duplicate(ucs4); id3_latin1_t *isostr = id3_ucs4_latin1duplicate(ucs4);
if (gcc_unlikely(isostr == nullptr)) if (gcc_unlikely(isostr == nullptr))
return nullptr; return nullptr;
......
...@@ -44,7 +44,7 @@ ZeroconfInit(gcc_unused EventLoop &loop) ...@@ -44,7 +44,7 @@ ZeroconfInit(gcc_unused EventLoop &loop)
{ {
const char *serviceName; const char *serviceName;
zeroconfEnabled = config_get_bool(CONF_ZEROCONF_ENABLED, zeroconfEnabled = config_get_bool(ConfigOption::ZEROCONF_ENABLED,
DEFAULT_ZEROCONF_ENABLED); DEFAULT_ZEROCONF_ENABLED);
if (!zeroconfEnabled) if (!zeroconfEnabled)
return; return;
...@@ -56,7 +56,8 @@ ZeroconfInit(gcc_unused EventLoop &loop) ...@@ -56,7 +56,8 @@ ZeroconfInit(gcc_unused EventLoop &loop)
return; return;
} }
serviceName = config_get_string(CONF_ZEROCONF_NAME, SERVICE_NAME); serviceName = config_get_string(ConfigOption::ZEROCONF_NAME,
SERVICE_NAME);
#ifdef HAVE_AVAHI #ifdef HAVE_AVAHI
AvahiInit(loop, serviceName); AvahiInit(loop, serviceName);
......
...@@ -120,7 +120,7 @@ main(int argc, char **argv) ...@@ -120,7 +120,7 @@ main(int argc, char **argv)
/* do it */ /* do it */
const struct config_param *path = config_get_param(CONF_DB_FILE); const auto *path = config_get_param(ConfigOption::DB_FILE);
config_param param("database", path != nullptr ? path->line : -1); config_param param("database", path != nullptr ? path->line : -1);
if (path != nullptr) if (path != nullptr)
param.AddBlockParam("path", path->value.c_str(), path->line); param.AddBlockParam("path", path->value.c_str(), path->line);
......
...@@ -46,7 +46,7 @@ int main(int argc, char **argv) ...@@ -46,7 +46,7 @@ int main(int argc, char **argv)
} }
ConfigOption option = ParseConfigOptionName(name); ConfigOption option = ParseConfigOptionName(name);
const char *value = option != CONF_MAX const char *value = option != ConfigOption::MAX
? config_get_string(option, nullptr) ? config_get_string(option, nullptr)
: nullptr; : nullptr;
int ret; int ret;
......
...@@ -51,7 +51,7 @@ static Filter * ...@@ -51,7 +51,7 @@ static Filter *
load_filter(const char *name) load_filter(const char *name)
{ {
const config_param *param = const config_param *param =
config_find_block(CONF_AUDIO_FILTER, "name", name); config_find_block(ConfigOption::AUDIO_FILTER, "name", name);
if (param == NULL) { if (param == NULL) {
fprintf(stderr, "No such configured filter: %s\n", name); fprintf(stderr, "No such configured filter: %s\n", name);
return nullptr; return nullptr;
......
...@@ -62,7 +62,7 @@ static AudioOutput * ...@@ -62,7 +62,7 @@ static AudioOutput *
load_audio_output(EventLoop &event_loop, const char *name) load_audio_output(EventLoop &event_loop, const char *name)
{ {
const config_param *param = const config_param *param =
config_find_block(CONF_AUDIO_OUTPUT, "name", name); config_find_block(ConfigOption::AUDIO_OUTPUT, "name", name);
if (param == NULL) { if (param == NULL) {
fprintf(stderr, "No such configured audio output: %s\n", name); fprintf(stderr, "No such configured audio output: %s\n", name);
return nullptr; return nullptr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment