+static void config_include_src(struct conf_config *config, xmlNode *n,
+ const char *src)
+{
+ xmlDoc *doc = xmlParseFile(src);
+ yaz_log(YLOG_LOG, "processing incldue src=%s", src);
+ if (doc)
+ {
+ xmlNodePtr t = xmlDocGetRootElement(doc);
+ xmlReplaceNode(n, xmlCopyNode(t, 1));
+ xmlFreeDoc(doc);
+ }
+}
+
+static void process_config_includes(struct conf_config *config, xmlNode *n)
+{
+ for (; n; n = n->next)
+ {
+ if (n->type == XML_ELEMENT_NODE)
+ {
+ if (!strcmp((const char *) n->name, "include"))
+ {
+ xmlChar *src = xmlGetProp(n, (xmlChar *) "src");
+ if (src)
+ {
+ config_include_src(config, n, (const char *) src);
+ xmlFree(src);
+ }
+ }
+ }
+ process_config_includes(config, n->children);
+ }
+}
+