aboutsummaryrefslogtreecommitdiffstats
path: root/src/cfg_xml.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cfg_xml.h')
-rw-r--r--src/cfg_xml.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/cfg_xml.h b/src/cfg_xml.h
new file mode 100644
index 000000000..3e1a4bcd4
--- /dev/null
+++ b/src/cfg_xml.h
@@ -0,0 +1,66 @@
+#ifndef RSPAMD_CFG_XML_H
+#define RSPAMD_CFG_XML_H
+
+#include "config.h"
+#include "cfg_file.h"
+
+#define XML_START_MISSING 1
+#define XML_PARAM_MISSING 2
+#define XML_EXTRA_ELEMENT 3
+#define XML_UNMATCHED_TAG 4
+
+enum xml_read_state {
+ XML_READ_START,
+ XML_READ_PARAM,
+ XML_READ_MODULE,
+ XML_READ_CLASSIFIER,
+ XML_READ_STATFILE,
+ XML_READ_FACTORS,
+ XML_READ_METRIC,
+ XML_READ_WORKER,
+ XML_READ_VARIABLE,
+ XML_READ_PIDFILE,
+ XML_READ_STATFILE_POOL,
+ XML_READ_FILTERS,
+ XML_READ_LOGGING,
+ XML_ERROR,
+ XML_END
+};
+
+struct rspamd_xml_userdata {
+ enum xml_read_state state;
+ struct config_file *cfg;
+ gchar *section_name;
+ gpointer other_data;
+};
+
+/* Called for open tags <foo bar="baz"> */
+void rspamd_xml_start_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error);
+
+/* Called for close tags </foo> */
+void rspamd_xml_end_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error);
+
+/* text is not nul-terminated */
+void rspamd_xml_text (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+
+/* Called on error, including one set by other
+* methods in the vtable. The GError should not be freed.
+*/
+void rspamd_xml_error (GMarkupParseContext *context,
+ GError *error,
+ gpointer user_data);
+
+
+#endif