+ else if (!yaz_matchstr(argv[0], "locale"))
+ {
+ zm->locale = nmem_strdup(zms->nmem, argv[1]);
+ }
+ else if (!yaz_matchstr(argv[0], "icuchain"))
+ {
+#if YAZ_HAVE_XML2
+ zm->doc = xmlParseFile(argv[1]);
+ if (!zm->doc)
+ {
+ yaz_log(YLOG_WARN, "%s:%d: Could not load icuchain config '%s'",
+ fname, lineno, argv[1]);
+ return -1;
+ }
+ else
+ {
+#if HAVE_ICU
+ UErrorCode status;
+ xmlNode *xml_node = xmlDocGetRootElement(zm->doc);
+ zm->icu_chain =
+ icu_chain_xml_config(xml_node, zm->locale,
+ zm->type == ZEBRA_MAP_TYPE_SORT,
+ &status);
+ if (!zm->icu_chain)
+ {
+ yaz_log(YLOG_WARN, "%s:%d: Failed to load ICU chain %s",
+ fname, lineno, argv[1]);
+ }
+#else
+ yaz_log(YLOG_WARN, "%s:%d: ICU support unavailable",
+ fname, lineno);
+ return -1;
+#endif
+ }
+#else
+ yaz_log(YLOG_WARN, "%s:%d: XML support unavailable",
+ fname, lineno);
+ return -1;
+#endif
+ }