X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fxmlquery.c;h=4728de64f6c66e18d54d6b030ff2a933e1ebe143;hp=2a401e16aae82cede438169a69005a7d67b441d9;hb=b2bc97df294f5da6c93e1119a42536b23afce8ef;hpb=d0e351c12fff564d876958e860338d43716dc269 diff --git a/src/xmlquery.c b/src/xmlquery.c index 2a401e1..4728de6 100644 --- a/src/xmlquery.c +++ b/src/xmlquery.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ /** \file xmlquery.c @@ -20,6 +20,7 @@ #include #include #include +#include #include static int check_diagnostic(const xmlNode *ptr, ODR odr, @@ -67,7 +68,7 @@ static void yaz_query2xml_attribute_element(const Z_AttributeElement *element, char formstr[30]; const char *setname = 0; char oid_name_str[OID_STR_MAX]; - + if (element->attributeSet) { setname = yaz_oid_to_string_buf(element->attributeSet, @@ -94,17 +95,17 @@ static void yaz_query2xml_attribute_element(const Z_AttributeElement *element, for (i = 0; ivalue.complex->num_list; i++) { xmlNodePtr node = xmlNewChild(parent, 0, BAD_CAST "attr", 0); - + if (setname) xmlNewProp(node, BAD_CAST "set", BAD_CAST setname); - + sprintf(formstr, ODR_INT_PRINTF, *element->attributeType); xmlNewProp(node, BAD_CAST "type", BAD_CAST formstr); - + if (element->value.complex->list[i]->which == Z_StringOrNumeric_string) { - xmlNewProp(node, BAD_CAST "value", BAD_CAST + xmlNewProp(node, BAD_CAST "value", BAD_CAST element->value.complex->list[i]->u.string); } else if (element->value.complex->list[i]->which == @@ -135,7 +136,7 @@ static xmlNodePtr yaz_query2xml_term(const Z_Term *term, xmlNodePtr parent) case Z_Term_numeric: type = "numeric"; sprintf(formstr, ODR_INT_PRINTF, *term->u.numeric); - t = xmlNewText(BAD_CAST formstr); + t = xmlNewText(BAD_CAST formstr); break; case Z_Term_characterString: type = "string"; @@ -201,11 +202,11 @@ static void yaz_query2xml_operator(Z_Operator *op, xmlNodePtr node) return; } xmlNewProp(node, BAD_CAST "type", BAD_CAST type); - + if (op->which == Z_Operator_prox) { char formstr[30]; - + if (op->u.prox->exclusion) { if (*op->u.prox->exclusion) @@ -218,12 +219,12 @@ static void yaz_query2xml_operator(Z_Operator *op, xmlNodePtr node) if (*op->u.prox->ordered) xmlNewProp(node, BAD_CAST "ordered", BAD_CAST "true"); - else + else xmlNewProp(node, BAD_CAST "ordered", BAD_CAST "false"); - + sprintf(formstr, ODR_INT_PRINTF, *op->u.prox->relationType); xmlNewProp(node, BAD_CAST "relationType", BAD_CAST formstr); - + switch(op->u.prox->which) { case Z_ProximityOperator_known: @@ -260,7 +261,7 @@ static xmlNodePtr yaz_query2xml_rpnstructure(const Z_RPNStructure *zs, return yaz_query2xml_apt(zs->u.simple->u.attributesPlusTerm, parent); else if (zs->u.simple->which == Z_Operand_resultSetId) - return xmlNewChild(parent, /* NS */ 0, BAD_CAST "rset", + return xmlNewChild(parent, /* NS */ 0, BAD_CAST "rset", BAD_CAST zs->u.simple->u.resultSetId); } return 0; @@ -314,7 +315,7 @@ void yaz_query2xml(const Z_Query *q, xmlDocPtr *docp) switch (q->which) { - case Z_Query_type_1: + case Z_Query_type_1: case Z_Query_type_101: q_node = xmlNewChild(top_node, 0, BAD_CAST "rpn", 0); child_node = yaz_query2xml_rpn(q->u.type_1, q_node); @@ -362,7 +363,7 @@ static void yaz_xml2query_operator(const xmlNode *ptr, Z_Operator **op, ODR odr, int *error_code, const char **addinfo) { - xmlChar *type = xmlGetProp((xmlNodePtr) ptr, BAD_CAST "type"); + const char *type = yaz_xml_get_prop((xmlNodePtr) ptr, "type"); if (!type) { *error_code = 1; @@ -370,22 +371,22 @@ static void yaz_xml2query_operator(const xmlNode *ptr, Z_Operator **op, return; } *op = (Z_Operator*) odr_malloc(odr, sizeof(Z_Operator)); - if (!xmlStrcmp(type, BAD_CAST "and")) + if (!strcmp(type, "and")) { (*op)->which = Z_Operator_and; (*op)->u.op_and = odr_nullval(); } - else if (!xmlStrcmp(type, BAD_CAST "or")) + else if (!strcmp(type, "or")) { (*op)->which = Z_Operator_or; (*op)->u.op_or = odr_nullval(); } - else if (!xmlStrcmp(type, BAD_CAST "not")) + else if (!strcmp(type, "not")) { (*op)->which = Z_Operator_and_not; (*op)->u.and_not = odr_nullval(); } - else if (!xmlStrcmp(type, BAD_CAST "prox")) + else if (!strcmp(type, "prox")) { struct _xmlAttr *attr; Z_ProximityOperator *pop = (Z_ProximityOperator *) @@ -437,10 +438,9 @@ static void yaz_xml2query_operator(const xmlNode *ptr, Z_Operator **op, *error_code = 1; *addinfo = "bad operator type"; } - xmlFree(type); } -static void yaz_xml2query_attribute_element(const xmlNode *ptr, +static void yaz_xml2query_attribute_element(const xmlNode *ptr, Z_AttributeElement **elem, ODR odr, int *error_code, const char **addinfo) @@ -484,7 +484,7 @@ static void yaz_xml2query_attribute_element(const xmlNode *ptr, *addinfo = "missing value attribute for att content"; return; } - + *elem = (Z_AttributeElement *) odr_malloc(odr, sizeof(**elem)); if (set) (*elem)->attributeSet = yaz_string_to_oid_odr(yaz_oid_std(), @@ -526,7 +526,7 @@ static void yaz_xml2query_attribute_element(const xmlNode *ptr, } } (*elem)->value.complex->num_semanticAction = 0; - (*elem)->value.complex->semanticAction = 0; + (*elem)->value.complex->semanticAction = 0; } else { /* good'ld numeric value */ @@ -565,7 +565,7 @@ static void yaz_xml2query_term(const xmlNode *ptr, Z_Term **term, ODR odr, { (*term)->which = Z_Term_general; (*term)->u.general = - odr_create_Odr_oct(odr, (unsigned char *)cdata, strlen(cdata)); + odr_create_Odr_oct(odr, cdata, strlen(cdata)); } else if (!xmlStrcmp(type, BAD_CAST "numeric")) { @@ -633,7 +633,7 @@ static void yaz_xml2query_apt(const xmlNode *ptr_apt, (*zapt)->attributes->attributes = (Z_AttributeElement **) odr_malloc(odr, sizeof(Z_AttributeElement*) * num_attr); - i = 0; + i = 0; ptr = ptr_apt->children; for (; ptr; ptr = ptr->next) if (ptr->type == XML_ELEMENT_NODE) @@ -654,7 +654,7 @@ static void yaz_xml2query_apt(const xmlNode *ptr_apt, if (ptr && ptr->type == XML_ELEMENT_NODE) { if (!xmlStrcmp(ptr->name, BAD_CAST "term")) - { + { /* deal with term */ yaz_xml2query_term(ptr, &(*zapt)->term, odr, error_code, addinfo); } @@ -691,7 +691,7 @@ static void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, { while (ptr && ptr->type != XML_ELEMENT_NODE) ptr = ptr->next; - + if (!ptr || ptr->type != XML_ELEMENT_NODE) { *error_code = 1; @@ -705,10 +705,10 @@ static void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, if (!xmlStrcmp(ptr->name, BAD_CAST "operator")) { Z_Complex *zc = (Z_Complex *) odr_malloc(odr, sizeof(Z_Complex)); - + (*zs)->which = Z_RPNStructure_complex; (*zs)->u.complex = zc; - + yaz_xml2query_operator(ptr, &zc->roperator, odr, error_code, addinfo); ptr = ptr->children; @@ -721,7 +721,7 @@ static void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, ptr = ptr->next; yaz_xml2query_rpnstructure(ptr, &zc->s2, odr, error_code, addinfo); } - else + else { Z_Operand *s = (Z_Operand *) odr_malloc(odr, sizeof(Z_Operand)); (*zs)->which = Z_RPNStructure_simple; @@ -734,7 +734,7 @@ static void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, } else if (!xmlStrcmp(ptr->name, BAD_CAST "rset")) { - s->which = Z_Operand_resultSetId; + s->which = Z_Operand_resultSetId; yaz_xml2query_rset(ptr, &s->u.resultSetId, odr, error_code, addinfo); } @@ -742,22 +742,21 @@ static void yaz_xml2query_rpnstructure(const xmlNode *ptr, Z_RPNStructure **zs, { *error_code = 1; *addinfo = "bad element: expected binary, apt or rset"; - } + } } } static void yaz_xml2query_rpn(const xmlNode *ptr, Z_RPNQuery **query, ODR odr, int *error_code, const char **addinfo) { - xmlChar *set = xmlGetProp((xmlNodePtr) ptr, BAD_CAST "set"); + const char *set = yaz_xml_get_prop((xmlNodePtr) ptr, "set"); *query = (Z_RPNQuery*) odr_malloc(odr, sizeof(Z_RPNQuery)); if (set) { (*query)->attributeSetId = yaz_string_to_oid_odr(yaz_oid_std(), - CLASS_ATTSET, (const char *) set, odr); - xmlFree(set); + CLASS_ATTSET, set, odr); } else (*query)->attributeSetId = 0; @@ -770,7 +769,7 @@ static void yaz_xml2query_(const xmlNode *ptr, Z_Query **query, ODR odr, { if (check_diagnostic(ptr, odr, error_code, addinfo)) return; - if (ptr && ptr->type == XML_ELEMENT_NODE && + if (ptr && ptr->type == XML_ELEMENT_NODE && !xmlStrcmp(ptr->name, BAD_CAST "query")) { const char *type;