X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;ds=sidebyside;f=src%2Fpazpar2_config.c;h=b45d8ec55afaa24b9e904c68f3e9deb79c15169f;hb=f1200fd1cab4fa57feacd43046997ce2d23edbd5;hp=b2064f90b51cb488c3313342cfd910ce9f56488e;hpb=1a3f3cfb2f6aeb743716924d9081d6dce981b49f;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index b2064f9..b45d8ec 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -127,10 +127,12 @@ struct conf_service *service_init(struct conf_server *server, 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; @@ -259,6 +261,7 @@ void service_destroy(struct conf_service *service) { 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); } @@ -542,6 +545,29 @@ static struct conf_service *service_create_static(struct conf_server *server, } } } + 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")) @@ -588,6 +614,21 @@ static struct conf_service *service_create_static(struct conf_server *server, //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);