X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fpazpar2_config.c;h=d992a33e2cbbfb6a7b23d6e4661d2954e0e52b64;hb=3371e5ba3a8d62b6edbb338984ac333bec6df01b;hp=075347eadfab8aafbb7241b52147d2c0e3366b4c;hpb=3c787972fe8ea6931db1ecf13783b00964f326bc;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index 075347e..d992a33 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -76,7 +76,8 @@ static void conf_metadata_assign(NMEM nmem, int sortkey_offset, enum conf_metadata_mergekey mt, const char *facetrule, - const char *limitmap) + const char *limitmap, + const char *frank) { assert(nmem && metadata && name); @@ -98,6 +99,7 @@ static void conf_metadata_assign(NMEM nmem, metadata->mergekey = mt; metadata->facetrule = nmem_strdup_null(nmem, facetrule); metadata->limitmap = nmem_strdup_null(nmem, limitmap); + metadata->frank = nmem_strdup_null(nmem, frank); } @@ -138,7 +140,7 @@ struct conf_service *service_init(struct conf_server *server, // Setup a dictionary from server. service->dictionary = 0; - service->settings = nmem_malloc(nmem, sizeof(struct settings)); + service->settings = nmem_malloc(nmem, sizeof(*service->settings)); service->settings->num_settings = PZ_MAX_EOF; service->settings->settings = nmem_malloc(nmem, sizeof(struct setting*) * service->settings->num_settings); memset(service->settings->settings, 0, sizeof(struct setting*) * service->settings->num_settings); @@ -177,7 +179,8 @@ static struct conf_metadata* conf_service_add_metadata( int sortkey_offset, enum conf_metadata_mergekey mt, const char *facetrule, - const char *limitmap + const char *limitmap, + const char *frank ) { struct conf_metadata * md = 0; @@ -189,7 +192,7 @@ static struct conf_metadata* conf_service_add_metadata( md = service->metadata + field_id; conf_metadata_assign(service->nmem, md, name, type, merge, setting, brief, termlist, rank, sortkey_offset, - mt, facetrule, limitmap); + mt, facetrule, limitmap, frank); return md; } @@ -294,6 +297,8 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, xmlChar *xml_mergekey = 0; xmlChar *xml_limitmap = 0; xmlChar *xml_icu_chain = 0; + xmlChar *xml_frank = 0; + struct _xmlAttr *attr; for (attr = n->properties; attr; attr = attr->next) { @@ -330,6 +335,9 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, else if (!xmlStrcmp(attr->name, BAD_CAST "limitmap") && attr->children && attr->children->type == XML_TEXT_NODE) xml_limitmap = attr->children->content; + else if (!xmlStrcmp(attr->name, BAD_CAST "frank") && + attr->children && attr->children->type == XML_TEXT_NODE) + xml_frank = attr->children->content; else { yaz_log(YLOG_FATAL, "Unknown metadata attribute '%s'", attr->name); @@ -470,7 +478,10 @@ static int parse_metadata(struct conf_service *service, xmlNode *n, (const char *) xml_name, type, merge, setting, brief, termlist, rank, sortkey_offset, - mergekey_type, (const char *) xml_icu_chain, (const char *) xml_limitmap); + mergekey_type, + (const char *) xml_icu_chain, + (const char *) xml_limitmap, + (const char *) xml_frank); (*md_node)++; return 0; }