From da9824e1aa5b9fd401860e358eb93a3a620bd0a2 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 10 Mar 2010 18:37:32 +0100 Subject: [PATCH] src/configfile.[ch]: Add "cf_util_get_int". Helper function to parse an "int". --- src/configfile.c | 18 ++++++++++++++++++ src/configfile.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/src/configfile.c b/src/configfile.c index 1bd02a82..0eeb86e6 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -980,6 +980,24 @@ int cf_util_get_string_buffer (const oconfig_item_t *ci, char *buffer, /* {{{ */ return (0); } /* }}} int cf_util_get_string_buffer */ +/* Assures the config option is a number and returns it as an int. */ +int cf_util_get_int (const oconfig_item_t *ci, int *ret_value) /* {{{ */ +{ + if ((ci == NULL) || (ret_value == NULL)) + return (EINVAL); + + if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_NUMBER)) + { + ERROR ("cf_util_get_int: The %s option requires " + "exactly one numeric argument.", ci->key); + return (-1); + } + + *ret_value = (int) ci->values[0].value.number; + + return (0); +} /* }}} int cf_util_get_int */ + int cf_util_get_boolean (const oconfig_item_t *ci, _Bool *ret_bool) /* {{{ */ { if ((ci == NULL) || (ret_bool == NULL)) diff --git a/src/configfile.h b/src/configfile.h index c1c5e293..432e09f5 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -96,6 +96,9 @@ int cf_util_get_string (const oconfig_item_t *ci, char **ret_string); int cf_util_get_string_buffer (const oconfig_item_t *ci, char *buffer, size_t buffer_size); +/* Assures the config option is a number and returns it as an int. */ +int cf_util_get_int (const oconfig_item_t *ci, int *ret_value); + /* Assures the config option is a boolean and assignes it to `ret_bool'. * Otherwise, `ret_bool' is not changed and non-zero is returned. */ int cf_util_get_boolean (const oconfig_item_t *ci, _Bool *ret_bool); -- 2.30.2