diff options
author | Max Kellermann <max@duempel.org> | 2009-06-19 09:02:14 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-06-25 08:40:02 +0200 |
commit | 5d583c9b2d21cf449c4b65f2306adf69d6739437 (patch) | |
tree | d3c650260c3ebf87a368915a8c2d091a711aecfa /src | |
parent | 093e900d4453a9f28d442c1c24a9ba59c36b349c (diff) | |
download | mpd-5d583c9b2d21cf449c4b65f2306adf69d6739437.tar.gz mpd-5d583c9b2d21cf449c4b65f2306adf69d6739437.tar.xz mpd-5d583c9b2d21cf449c4b65f2306adf69d6739437.zip |
conf: make get_bool() return a bool
Instead of returning an artificial three-state integer, return a
"success" value and put the boolean value into a "bool" pointer.
That's a little bit more overhead, but an API which looks more
natural.
Diffstat (limited to '')
-rw-r--r-- | src/conf.c | 37 | ||||
-rw-r--r-- | src/conf.h | 3 |
2 files changed, 18 insertions, 22 deletions
diff --git a/src/conf.c b/src/conf.c index df6a8c546..0c50d4c8a 100644 --- a/src/conf.c +++ b/src/conf.c @@ -106,18 +106,23 @@ string_array_contains(const char *const* array, const char *value) return false; } -static int get_bool(const char *value) +static bool +get_bool(const char *value, bool *value_r) { static const char *t[] = { "yes", "true", "1", NULL }; static const char *f[] = { "no", "false", "0", NULL }; - if (string_array_contains(t, value)) + if (string_array_contains(t, value)) { + *value_r = true; return true; + } - if (string_array_contains(f, value)) - return false; + if (string_array_contains(f, value)) { + *value_r = false; + return true; + } - return CONF_BOOL_INVALID; + return false; } struct config_param * @@ -423,21 +428,18 @@ config_get_block_param(const struct config_param * param, const char *name) bool config_get_bool(const char *name, bool default_value) { const struct config_param *param = config_get_param(name); - int value; + bool success, value; if (param == NULL) return default_value; - value = get_bool(param->value); - if (value == CONF_BOOL_INVALID) + success = get_bool(param->value, &value); + if (!success) g_error("%s is not a boolean value (yes, true, 1) or " "(no, false, 0) on line %i\n", name, param->line); - if (value == CONF_BOOL_UNSET) - return default_value; - - return !!value; + return value; } const char * @@ -478,19 +480,16 @@ config_get_block_bool(const struct config_param *param, const char *name, bool default_value) { struct block_param *bp = config_get_block_param(param, name); - int value; + bool success, value; if (bp == NULL) return default_value; - value = get_bool(bp->value); - if (value == CONF_BOOL_INVALID) + success = get_bool(param->value, &value); + if (!success) g_error("%s is not a boolean value (yes, true, 1) or " "(no, false, 0) on line %i\n", name, bp->line); - if (value == CONF_BOOL_UNSET) - return default_value; - - return !!value; + return value; } diff --git a/src/conf.h b/src/conf.h index 381159122..017a8c310 100644 --- a/src/conf.h +++ b/src/conf.h @@ -68,9 +68,6 @@ #define CONF_INPUT "input" #define CONF_GAPLESS_MP3_PLAYBACK "gapless_mp3_playback" -#define CONF_BOOL_UNSET -1 -#define CONF_BOOL_INVALID -2 - #define DEFAULT_PLAYLIST_MAX_LENGTH (1024*16) #define DEFAULT_PLAYLIST_SAVE_ABSOLUTE_PATHS false |