X-Git-Url: http://git.indexdata.com/?p=yazproxy-moved-to-github.git;a=blobdiff_plain;f=src%2Fyaz-proxy-config.cpp;h=5bd08e3636c504a368934db35756af442ae1398e;hp=18a49dd4bae55834e81b0b32008c0fa716957162;hb=0864c203e6cb754b126e559e22d80bf3087fcc48;hpb=4f79f9b5b0095b2f81b1ce583f0f82462f9ee36a diff --git a/src/yaz-proxy-config.cpp b/src/yaz-proxy-config.cpp index 18a49dd..5bd08e3 100644 --- a/src/yaz-proxy-config.cpp +++ b/src/yaz-proxy-config.cpp @@ -729,7 +729,8 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, char **backend_type, char **backend_charset, char **usemarcon_ini_stage1, - char **usemarcon_ini_stage2 + char **usemarcon_ini_stage2, + char **backend_elementset ) { if (stylesheet) @@ -762,6 +763,8 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, xfree (*usemarcon_ini_stage2); *usemarcon_ini_stage2 = 0; } + xfree(*backend_elementset); + *backend_elementset = 0; #if YAZ_HAVE_XSLT int syntax_has_matched = 0; xmlNodePtr ptr; @@ -784,40 +787,49 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, const char *match_backend_charset = 0; const char *match_usemarcon_ini_stage1 = 0; const char *match_usemarcon_ini_stage2 = 0; + const char *match_elementset = 0; struct _xmlAttr *attr; for (attr = ptr->properties; attr; attr = attr->next) { if (!strcmp((const char *) attr->name, "type") && attr->children && attr->children->type == XML_TEXT_NODE) match_type = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "error") && + else if (!strcmp((const char *) attr->name, "error") && attr->children && attr->children->type == XML_TEXT_NODE) match_error = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "marcxml") && + else if (!strcmp((const char *) attr->name, "marcxml") && attr->children && attr->children->type == XML_TEXT_NODE) match_marcxml = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "stylesheet") && + else if (!strcmp((const char *) attr->name, "stylesheet") && attr->children && attr->children->type == XML_TEXT_NODE) match_stylesheet = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "identifier") && + else if (!strcmp((const char *) attr->name, "identifier") && attr->children && attr->children->type == XML_TEXT_NODE) match_identifier = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "backendtype") && + else if (!strcmp((const char *) attr->name, "backendtype") && attr->children && attr->children->type == XML_TEXT_NODE) match_backend_type = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "backendcharset") && + else if (!strcmp((const char *) attr->name, "backendcharset") && attr->children && attr->children->type == XML_TEXT_NODE) match_backend_charset = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "usemarconstage1") && + else if (!strcmp((const char *) attr->name, "usemarconstage1") && attr->children && attr->children->type == XML_TEXT_NODE) match_usemarcon_ini_stage1 = (const char *) attr->children->content; - if (!strcmp((const char *) attr->name, "usemarconstage2") && + else if (!strcmp((const char *) attr->name, "usemarconstage2") && attr->children && attr->children->type == XML_TEXT_NODE) match_usemarcon_ini_stage2 = (const char *) attr->children->content; + else if (!strcmp((const char *) attr->name, "backendelementset") && + attr->children && attr->children->type == XML_TEXT_NODE) + match_elementset = (const char *) attr->children->content; + else + { + yaz_log(YLOG_WARN, "0 Unknown attribute %s in ", + (const char *) attr->name); + } } if (match_type) { @@ -867,6 +879,11 @@ int Yaz_ProxyConfig::check_syntax(ODR odr, const char *name, xfree(*backend_charset); *backend_charset = xstrdup(match_backend_charset); } + if (match_elementset) + { + xfree(*backend_elementset); + *backend_elementset = xstrdup(match_elementset); + } if (usemarcon_ini_stage1 && match_usemarcon_ini_stage1) { xfree(*usemarcon_ini_stage1);