From: Florian Forster Date: Thu, 24 Sep 2009 15:32:29 +0000 (+0200) Subject: src/configfile.[ch]: Implement "cf_util_get_string". X-Git-Tag: collectd-4.9.0~73^2~34 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=275bc6640dfc2ba747dd64884d9e91191f06fa82;p=collectd.git src/configfile.[ch]: Implement "cf_util_get_string". --- diff --git a/src/configfile.c b/src/configfile.c index d401a2e1..df042894 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -917,3 +917,28 @@ int cf_read (char *filename) return (0); } /* int cf_read */ + +/* Assures the config option is a string, duplicates it and returns the copy in + * "ret_string". If necessary "*ret_string" is freed first. Returns zero upon + * success. */ +int cf_util_get_string (const oconfig_item_t *ci, char **ret_string) /* {{{ */ +{ + char *string; + + if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) + { + ERROR ("cf_util_get_string: The %s plugin requires " + "exactly one string argument.", ci->key); + return (-1); + } + + string = strdup (ci->values[0].value.string); + if (string == NULL) + return (-1); + + if (*ret_string != NULL) + sfree (*ret_string); + *ret_string = string; + + return (0); +} /* }}} int cf_util_get_string */ diff --git a/src/configfile.h b/src/configfile.h index 3952c180..aca58770 100644 --- a/src/configfile.h +++ b/src/configfile.h @@ -86,4 +86,9 @@ int cf_read (char *filename); int global_option_set (const char *option, const char *value); const char *global_option_get (const char *option); +/* Assures the config option is a string, duplicates it and returns the copy in + * "ret_string". If necessary "*ret_string" is freed first. Returns zero upon + * success. */ +int cf_util_get_string (const oconfig_item_t *ci, char **ret_string); + #endif /* defined(CONFIGFILE_H) */