/* This file is part of Pazpar2.
- Copyright (C) 2006-2013 Index Data
+ Copyright (C) Index Data
Pazpar2 is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
#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;
}
#if YAZ_HAVE_ICU
UErrorCode status = U_ZERO_ERROR;
struct icu_chain *chain = 0;
- while (xml_node && xml_node->type != XML_ELEMENT_NODE)
- xml_node = xml_node->next;
chain = icu_chain_xml_config(xml_node, 1, &status);
- if (!chain || U_FAILURE(status)){
- //xmlDocPtr icu_doc = 0;
- //xmlChar *xmlstr = 0;
- //int size = 0;
- //xmlDocDumpMemory(icu_doc, size);
-
+ if (!chain || U_FAILURE(status))
+ {
yaz_log(YLOG_FATAL, "Could not parse ICU chain config:\n"
"<%s>\n ... \n</%s>",
xml_node->name, xml_node->name);