- struct zm_token *token = nmem_malloc (zms->nmem, sizeof(*token));
- token->next = (*zm)->replace_tokens;
- (*zm)->replace_tokens = token;
-#if 0
- logf (LOG_LOG, "replace %s", argv[1]);
-#endif
- token->token_from = 0;
- if (argc >= 2)
+ yaz_log(YLOG_WARN|YLOG_FATAL, "%s:%d: alwaysmatches for "
+ "staticrank is invalid", fname, lineno);
+ return -1;
+ }
+ }
+ else if (!yaz_matchstr(argv[0], "firstinfield") && argc == 2)
+ {
+ zm->first_in_field = atoi(argv[1]);
+ }
+ else if (!yaz_matchstr(argv[0], "entrysize") && argc == 2)
+ {
+ if (zm->type == ZEBRA_MAP_TYPE_SORT)
+ zm->u.sort.entry_size = atoi(argv[1]);
+ else
+ {
+ yaz_log(YLOG_WARN,
+ "%s:%d: entrysize only valid in sort section",
+ fname, lineno);
+ return -1;
+ }
+ }
+ else if (!yaz_matchstr(argv[0], "locale"))
+ {
+ zm->locale = nmem_strdup(zms->nmem, argv[1]);
+ }
+ else if (!yaz_matchstr(argv[0], "simplechain"))
+ {
+ zm->use_chain = 1;
+ zm->icu_chain = 0;
+ }
+ else if (!yaz_matchstr(argv[0], "icuchain"))
+ {
+#if YAZ_HAVE_XML2
+ if (!zm->locale)
+ {
+ yaz_log(YLOG_WARN, "%s:%d: locale required before icuchain",
+ fname, lineno);
+ return -1;
+ }
+ 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,
+/* not sure about sort for this function yet.. */
+#if 1
+ 1,
+#else
+ zm->type == ZEBRA_MAP_TYPE_SORT,
+#endif
+ &status);
+ if (!zm->icu_chain)