service->next = 0;
service->databases = 0;
service->xslt_list = 0;
+ service->ccl_bibset = 0;
service->server = server;
service->session_timeout = 60; /* default session timeout */
service->z3950_session_timeout = 180;
service->z3950_operation_timeout = 30;
+ service->rank_cluster = 1;
service->charsets = 0;
{
service_xslt_destroy(service);
pp2_charset_fact_destroy(service->charsets);
+ ccl_qual_rm(&service->ccl_bibset);
yaz_mutex_destroy(&service->mutex);
nmem_destroy(service->nmem);
}
}
}
}
+ else if (!strcmp((const char *) n->name, "ccldirective"))
+ {
+ char *name;
+ char *value;
+ if (!service->ccl_bibset)
+ service->ccl_bibset = ccl_qual_mk();
+ name = (char *) xmlGetProp(n, (xmlChar *) "name");
+ if (!name)
+ {
+ yaz_log(YLOG_FATAL, "ccldirective: missing @name");
+ return 0;
+ }
+ value = (char *) xmlGetProp(n, (xmlChar *) "value");
+ if (!value)
+ {
+ xmlFree(name);
+ yaz_log(YLOG_FATAL, "ccldirective: missing @value");
+ return 0;
+ }
+ ccl_qual_add_special(service->ccl_bibset, name, value);
+ xmlFree(value);
+ xmlFree(name);
+ }
else if (!strcmp((const char *) n->name, "settings"))
got_settings++;
else if (!strcmp((const char *) n->name, "icu_chain"))
//service_aply_setting(service, name, value);
}
}
+ else if (!strcmp((const char *) n->name, "rank"))
+ {
+ char *rank_cluster = (char *) xmlGetProp(n, (xmlChar *) "cluster");
+
+ if (rank_cluster && !strcmp(rank_cluster, "yes"))
+ service->rank_cluster = 1;
+ else if (rank_cluster && !strcmp(rank_cluster, "no"))
+ service->rank_cluster = 0;
+ else
+ {
+ yaz_log(YLOG_FATAL, "service: rank@cluster boolean");
+ return 0;
+ }
+ xmlFree(rank_cluster);
+ }
else
{
yaz_log(YLOG_FATAL, "Bad element: %s", n->name);