#include <yaz/wrbuf.h>
#include <yaz/log.h>
#include <yaz/yaz-version.h>
+#include <yaz/xml_get.h>
#include <ctype.h>
#include <assert.h>
#include <string.h>
}
int pp2_charset_fact_define(pp2_charset_fact_t pft,
- xmlNode *xml_node, const char *default_id)
+ xmlNode *xml_node, const char *id)
{
int r;
pp2_charset_t pct;
- xmlChar *id = 0;
assert(xml_node);
+
+ if (strcmp((const char *) xml_node->name, "icu_chain"))
+ {
+ yaz_log(YLOG_WARN, "Wrapper element <%s> deprecated", xml_node->name);
+ yaz_log(YLOG_LOG, "Use <icu_chain id=\"%s\">.. only", xml_node->name);
+ xml_node = xml_node->children;
+ while (xml_node && xml_node->type != XML_ELEMENT_NODE)
+ xml_node = xml_node->next;
+ }
+ if (!xml_node)
+ {
+ yaz_log(YLOG_FATAL, "Missing icu_chain element");
+ return -1;
+ }
pct = pp2_charset_create_xml(xml_node);
if (!pct)
return -1;
- if (!default_id)
+ if (!id)
{
- id = xmlGetProp(xml_node, (xmlChar*) "id");
+ id = yaz_xml_get_prop(xml_node, "id");
if (!id)
{
yaz_log(YLOG_WARN, "Missing id for icu_chain");
pp2_charset_destroy(pct);
return -1;
}
- default_id = (const char *) id;
}
- r = pp2_charset_fact_add(pft, pct, default_id);
- if (id)
- xmlFree(id);
+ r = pp2_charset_fact_add(pft, pct, id);
return r;
}