diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-08-31 14:53:33 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-08-31 14:53:33 +0100 |
commit | 50bae963e44e0312544b79a2ee4b4a3e8e37690f (patch) | |
tree | 039df235a844defc28c11ad3546a48ce9e8d2a3d /src/cfg_rcl.c | |
parent | 44c7c7e776487b5918c8570a6b876138953ec8ed (diff) | |
download | rspamd-50bae963e44e0312544b79a2ee4b4a3e8e37690f.tar.gz rspamd-50bae963e44e0312544b79a2ee4b4a3e8e37690f.zip |
Add parser for boolean fields in a structure.
Diffstat (limited to 'src/cfg_rcl.c')
-rw-r--r-- | src/cfg_rcl.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/cfg_rcl.c b/src/cfg_rcl.c index 6103627c1..b08e530ab 100644 --- a/src/cfg_rcl.c +++ b/src/cfg_rcl.c @@ -484,3 +484,26 @@ rspamd_rcl_parse_struct_string_list (struct config_file *cfg, rspamd_cl_object_t return TRUE; } + +gboolean +rspamd_rcl_parse_struct_boolean (struct config_file *cfg, rspamd_cl_object_t *obj, + gpointer ud, struct rspamd_rcl_section *section, GError **err) +{ + struct rspamd_rcl_struct_parser *pd = ud; + gboolean *target; + + target = (gboolean *)(((gchar *)pd->user_struct) + pd->offset); + + if (obj->type == RSPAMD_CL_BOOLEAN) { + *target = obj->value.iv; + } + else if (obj->type == RSPAMD_CL_INT) { + *target = obj->value.iv; + } + else { + g_set_error (err, CFG_RCL_ERROR, EINVAL, "cannot convert an object to boolean"); + return FALSE; + } + + return TRUE; +} |