X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpazpar2_config.c;h=92717e2170efd9902f7eb8e02e58f652d57537c1;hb=f451628ce616009071ab80cbe201cc7a3f60702d;hp=2d747cabbe90a49464f1bd1461379c7c3c9a88d3;hpb=fb19bc317370b4f4b508088b034b4c2d19257042;p=pazpar2-moved-to-github.git diff --git a/src/pazpar2_config.c b/src/pazpar2_config.c index 2d747ca..92717e2 100644 --- a/src/pazpar2_config.c +++ b/src/pazpar2_config.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2013 Index Data + Copyright (C) Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -78,7 +78,7 @@ static char *xml_context(const xmlNode *ptr, char *res, size_t len) off = off - l; memcpy(res + off, attr->name, l); res[--off] = '@'; - } + } while (ptr && ptr->type == XML_ELEMENT_NODE) { size_t l = strlen((const char *) ptr->name); @@ -1027,66 +1027,71 @@ static void info_service_metadata(struct conf_service *service, WRBUF w) } if (md->sortkey_offset > 0) { wrbuf_puts(w, " sortkey=\""); - switch (service->sortkeys[md->sortkey_offset].type) { - case Metadata_type_relevance: - wrbuf_puts(w, "relevance"); - break; - case Metadata_type_skiparticle: - wrbuf_puts(w, "skiparticle"); - break; - case Metadata_type_position: - wrbuf_puts(w, "position"); - break; - default: - wrbuf_puts(w, "yes"); - break; - } - wrbuf_puts(w, "\""); - } - - switch (md->type) { - case Metadata_type_generic: + switch (service->sortkeys[md->sortkey_offset].type) + { + case Metadata_type_relevance: + wrbuf_puts(w, "relevance"); break; - case Metadata_type_year: - wrbuf_puts(w, " type=\"year\""); + case Metadata_type_skiparticle: + wrbuf_puts(w, "skiparticle"); break; - case Metadata_type_date: - wrbuf_puts(w, " type=\"date\""); + case Metadata_type_position: + wrbuf_puts(w, "position"); break; - case Metadata_type_float: - wrbuf_puts(w, " type=\"float\""); + default: + wrbuf_puts(w, "yes"); break; + } + wrbuf_puts(w, "\""); } - - switch (md->merge) { - case Metadata_merge_no: - break; - case Metadata_merge_unique: - wrbuf_puts(w, " merge=\"unique\""); - break; - case Metadata_merge_longest: - wrbuf_puts(w, " merge=\"longest\""); - break; - case Metadata_merge_range: - wrbuf_puts(w, " merge=\"range\""); - break; - case Metadata_merge_all: - wrbuf_puts(w, " merge=\"all\""); - break; - case Metadata_merge_first: - wrbuf_puts(w, " merge=\"first\""); - break; + switch (md->type) + { + case Metadata_type_generic: + case Metadata_type_skiparticle: + break; + case Metadata_type_year: + wrbuf_puts(w, " type=\"year\""); + break; + case Metadata_type_date: + wrbuf_puts(w, " type=\"date\""); + break; + case Metadata_type_float: + wrbuf_puts(w, " type=\"float\""); + break; + case Metadata_type_relevance: + case Metadata_type_position: + break; } - - switch (md->mergekey) { - case Metadata_mergekey_no: - break; - case Metadata_mergekey_optional: - wrbuf_puts(w, " mergekey=\"optional\""); - break; - case Metadata_mergekey_required: - wrbuf_puts(w, " mergekey=\"required\""); - break; + switch (md->merge) + { + case Metadata_merge_no: + break; + case Metadata_merge_unique: + wrbuf_puts(w, " merge=\"unique\""); + break; + case Metadata_merge_longest: + wrbuf_puts(w, " merge=\"longest\""); + break; + case Metadata_merge_range: + wrbuf_puts(w, " merge=\"range\""); + break; + case Metadata_merge_all: + wrbuf_puts(w, " merge=\"all\""); + break; + case Metadata_merge_first: + wrbuf_puts(w, " merge=\"first\""); + break; + } + switch (md->mergekey) + { + case Metadata_mergekey_no: + break; + case Metadata_mergekey_optional: + wrbuf_puts(w, " mergekey=\"optional\""); + break; + case Metadata_mergekey_required: + wrbuf_puts(w, " mergekey=\"required\""); + break; } wrbuf_puts(w, " />\n"); } @@ -1105,16 +1110,18 @@ static void info_service_databases(struct conf_service *service, WRBUF w) for(db = service->databases; db; db = db->next) { wrbuf_puts(w, " id) { - wrbuf_puts(w, " id=\""); - wrbuf_printf(w, "%s", db->id); - wrbuf_puts(w, "\""); + if (db->id) + { + wrbuf_puts(w, " id=\""); + wrbuf_printf(w, "%s", db->id); + wrbuf_puts(w, "\""); } wrbuf_puts(w, ">\n"); for (i = 0; i < db->num_settings; i++) { s = db->settings[i]; - while (s != NULL) { + while (s != NULL) + { wrbuf_puts(w, " name); @@ -1128,7 +1135,6 @@ static void info_service_databases(struct conf_service *service, WRBUF w) } wrbuf_puts(w, " \n"); } - wrbuf_puts(w, " \n"); } }