]> source.dussan.org Git - rspamd.git/commitdiff
Add parser for boolean fields in a structure.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 31 Aug 2013 13:53:33 +0000 (14:53 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 31 Aug 2013 13:53:33 +0000 (14:53 +0100)
src/cfg_rcl.c
src/cfg_rcl.h

index 6103627c157434d4f1cecee220850d1e68971fb6..b08e530ab0c153d01fd72aa3a48353150ebdf660 100644 (file)
@@ -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;
+}
index afe27d4800bd6a7e05c97fb1a4d4016ed1099c67..08ad3594cd0f0570495d5bd658916e19100f2794 100644 (file)
@@ -172,4 +172,16 @@ gboolean rspamd_rcl_parse_struct_time (struct config_file *cfg, rspamd_cl_object
 gboolean rspamd_rcl_parse_struct_string_list (struct config_file *cfg, rspamd_cl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
+/**
+ * Parse a boolean field of a structure
+ * @param cfg config pointer
+ * @param obj object to parse
+ * @param ud struct_parser structure (flags mean the exact structure used)
+ * @param section the current section
+ * @param err error pointer
+ * @return TRUE if a value has been successfully parsed
+ */
+gboolean rspamd_rcl_parse_struct_boolean (struct config_file *cfg, rspamd_cl_object_t *obj,
+               gpointer ud, struct rspamd_rcl_section *section, GError **err);
+
 #endif /* CFG_RCL_H_ */