From: Vsevolod Stakhov Date: Mon, 23 Apr 2012 14:47:21 +0000 (+0400) Subject: Add basic list config parser. X-Git-Tag: 0.5.0~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a8f854b5bc2279a8d2ee6ff3bac362dac635372;p=thirdparty%2Frspamd.git Add basic list config parser. --- diff --git a/src/cfg_xml.c b/src/cfg_xml.c index c700a03661..924dc283e2 100644 --- a/src/cfg_xml.c +++ b/src/cfg_xml.c @@ -1537,6 +1537,18 @@ xml_handle_string_list (struct config_file *cfg, struct rspamd_xml_userdata *ctx return TRUE; } +gboolean +xml_handle_list (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset) +{ + /* Simply assign pointer to pointer */ + GList **dest; + + dest = (GList **)G_STRUCT_MEMBER_P (dest_struct, offset); + *dest = g_list_prepend (*dest, memory_pool_strdup (cfg->cfg_pool, data)); + + return TRUE; +} + gboolean xml_handle_size (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset) diff --git a/src/cfg_xml.h b/src/cfg_xml.h index 4e7f1481aa..b78a74fd91 100644 --- a/src/cfg_xml.h +++ b/src/cfg_xml.h @@ -95,6 +95,9 @@ void rspamd_xml_error (GMarkupParseContext *context, gboolean xml_handle_string (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset); gboolean xml_handle_string_list (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset); +/* Handle glist attributes as strings */ +gboolean xml_handle_list (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset); + /* Numeric params */ gboolean xml_handle_size (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset); gboolean xml_handle_size_64 (struct config_file *cfg, struct rspamd_xml_userdata *ctx, GHashTable *attrs, gchar *data, gpointer user_data, gpointer dest_struct, gint offset);