]> source.dussan.org Git - rspamd.git/commitdiff
Add parser for default values in rcl section.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 1 Sep 2013 13:40:37 +0000 (14:40 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 1 Sep 2013 13:40:37 +0000 (14:40 +0100)
src/cfg_rcl.c
src/cfg_rcl.h

index b08e530ab0c153d01fd72aa3a48353150ebdf660..89d0e54f6faadfdf75847bac1c51a05fa25f2956 100644 (file)
@@ -293,6 +293,31 @@ rspamd_read_rcl_config (struct rspamd_rcl_section *top,
        return TRUE;
 }
 
+gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
+               struct config_file *cfg, rspamd_cl_object_t *obj, gpointer ptr,
+               GError **err)
+{
+       rspamd_cl_object_t *found;
+       struct rspamd_rcl_default_handler_data *cur, *tmp;
+
+       if (obj->type != RSPAMD_CL_OBJECT) {
+               g_set_error (err, CFG_RCL_ERROR, EINVAL, "default configuration must be an object");
+               return FALSE;
+       }
+
+       HASH_ITER (hh, section->default_parser, cur, tmp) {
+               HASH_FIND_STR (obj->value.ov, cur->key, found);
+               if (found != NULL) {
+                       cur->pd.user_struct = ptr;
+                       if (!cur->handler (cfg, found, &cur->pd, section, err)) {
+                               return FALSE;
+                       }
+               }
+       }
+
+       return TRUE;
+}
+
 gboolean
 rspamd_rcl_parse_struct_string (struct config_file *cfg, rspamd_cl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
index 08ad3594cd0f0570495d5bd658916e19100f2794..11294e2fcc85393b8a63905f62379b7906c3d4a3 100644 (file)
@@ -105,6 +105,19 @@ struct rspamd_rcl_section *rspamd_rcl_config_get_section (struct rspamd_rcl_sect
 gboolean rspamd_read_rcl_config (struct rspamd_rcl_section *top,
                struct config_file *cfg, rspamd_cl_object_t *obj, GError **err);
 
+
+/**
+ * Parse default structure for a section
+ * @param section section
+ * @param cfg config file
+ * @param obj object to parse
+ * @param ptr ptr to pass
+ * @param err error ptr
+ * @return TRUE if the object has been parsed
+ */
+gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
+               struct config_file *cfg, rspamd_cl_object_t *obj, gpointer ptr,
+               GError **err);
 /**
  * Here is a section of common handlers that accepts rcl_struct_parser
  * which itself contains a struct pointer and the offset of a member in a