From: Andreas Schneider Date: Wed, 22 Jul 2020 15:48:25 +0000 (+0200) Subject: lib:param: Add lpcfg_parse_enum_vals() X-Git-Tag: talloc-2.3.2~809 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93e97d5afd309a8acf8217381f14f3dde4456a06;p=thirdparty%2Fsamba.git lib:param: Add lpcfg_parse_enum_vals() Signed-off-by: Andreas Schneider Reviewed-by: Stefan Metzmacher --- diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 0511bdb41e4..5309561b398 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -3678,3 +3678,33 @@ char *lpcfg_substituted_string(TALLOC_CTX *mem_ctx, raw_value, lp_sub->private_data); } + +/** + * @brief Parse a string value of a given parameter to its integer enum value. + * + * @param[in] param_name The parameter name (e.g. 'client smb encrypt') + * + * @param[in] param_value The parameter value (e.g. 'required'). + * + * @return The integer value of the enum the param_value matches or INT32_MIN + * on error. + */ +int32_t lpcfg_parse_enum_vals(const char *param_name, + const char *param_value) +{ + struct parm_struct *parm = NULL; + int32_t ret = INT32_MIN; + bool ok; + + parm = lpcfg_parm_struct(NULL, param_name); + if (parm == NULL) { + return INT32_MIN; + } + + ok = lp_set_enum_parm(parm, param_value, &ret); + if (!ok) { + return INT32_MIN; + } + + return ret; +} diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h index 323fcf84523..e66ce2324b4 100644 --- a/lib/param/loadparm.h +++ b/lib/param/loadparm.h @@ -316,6 +316,8 @@ bool lp_do_section(const char *pszSectionName, void *userdata); bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue); int num_parameters(void); +int32_t lpcfg_parse_enum_vals(const char *param_name, + const char *param_value); struct loadparm_substitution; #ifdef LOADPARM_SUBSTITUTION_INTERNALS