/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) Index Data
* See the file LICENSE for details.
*/
/**
};
static Z_RPNStructure *rpn_structure(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int max_attr,
+ int num_attr, int max_attr,
Odr_int *attr_list, char **attr_clist,
Odr_oid **attr_set);
size_t off)
{
size_t len=strlen(src);
-
+
if (li->lex_len == len+off && !memcmp(li->lex_buf+off, src, len-off))
return 1;
return 0;
++(*qptr);
}
li->lex_buf = *qptr;
-
+
if (**qptr == li->escape_char && yaz_isdigit((*qptr)[1]))
{
++(li->lex_len);
return li->query_look = query_token(li);
}
-int escape_string(char *out_buf, const char *in, int len)
+static int escape_string(char *out_buf, const char *in, int len)
{
char *out = out_buf;
char s[4];
int n = 0;
s[0] = *in;
- s[1] = *++in;
+ s[1] = *++in;
s[2] = *++in;
s[3] = '\0';
len = len - 2;
return out - out_buf;
}
-int p_query_parse_attr(struct yaz_pqf_parser *li, ODR o,
+static int p_query_parse_attr(struct yaz_pqf_parser *li, ODR o,
int num_attr, Odr_int *attr_list,
char **attr_clist, Odr_oid **attr_set)
{
return 0;
}
}
- else
+ else
{
if (num_attr > 0)
attr_set[num_attr] = attr_set[num_attr-1];
return 1;
}
-Z_AttributeList *get_attributeList(ODR o, int num_attr, Odr_int *attr_list,
- char **attr_clist, Odr_oid **attr_set)
+static Z_AttributeList *get_attributeList(ODR o,
+ int num_attr, Odr_int *attr_list,
+ char **attr_clist, Odr_oid **attr_set)
{
int i, k = 0;
Odr_int *attr_tmp;
return attributes;
}
elements = (Z_AttributeElement**)
- odr_malloc (o, num_attr * sizeof(*elements));
+ odr_malloc(o, num_attr * sizeof(*elements));
attr_tmp = (Odr_int *)odr_malloc(o, num_attr * 2 * sizeof(*attr_tmp));
memcpy(attr_tmp, attr_list, num_attr * 2 * sizeof(*attr_tmp));
Z_Term *z_Term_create(ODR o, int term_type, const char *buf, size_t len)
{
Z_Term *term = (Z_Term *)odr_malloc(o, sizeof(*term));
- Odr_oct *term_octet = (Odr_oct *)odr_malloc(o, sizeof(*term_octet));
- term_octet->buf = (unsigned char *)odr_malloc(o, 1 + len);
- memcpy(term_octet->buf, buf, len);
- term_octet->size = term_octet->len = len;
- term_octet->buf[term_octet->size] = 0; /* null terminate */
-
switch (term_type)
{
case Z_Term_general:
term->which = Z_Term_general;
- term->u.general = term_octet;
+ term->u.general = odr_create_Odr_oct(o, buf, len);
break;
case Z_Term_characterString:
term->which = Z_Term_characterString;
- term->u.characterString = (char*) term_octet->buf;
- /* null terminated above */
+ term->u.characterString = odr_strdupn(o, buf, len);
break;
case Z_Term_numeric:
term->which = Z_Term_numeric;
- term->u.numeric = odr_intdup(o, odr_atoi((const char*) term_octet->buf));
+ term->u.numeric = odr_intdup(o, odr_atoi(odr_strdupn(o, buf, len)));
break;
case Z_Term_null:
term->which = Z_Term_null;
return 0;
}
zo->which = Z_Operand_resultSetId;
- zo->u.resultSetId = (char *)odr_malloc(o, li->lex_len+1);
- memcpy(zo->u.resultSetId, li->lex_buf, li->lex_len);
- zo->u.resultSetId[li->lex_len] = '\0';
+ zo->u.resultSetId = odr_strdupn(o, li->lex_buf, li->lex_len);
lex(li);
break;
default:
li->error = YAZ_PQF_ERROR_PROXIMITY;
return NULL;
}
-
+
if (!lex (li))
{
li->error = YAZ_PQF_ERROR_MISSING;
}
static Z_Complex *rpn_complex(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int max_attr,
+ int num_attr, int max_attr,
Odr_int *attr_list, char **attr_clist,
Odr_oid **attr_set)
{
#endif
lex(li);
}
-
+
static Z_RPNStructure *rpn_structure(struct yaz_pqf_parser *li, ODR o,
- int num_attr, int max_attr,
+ int num_attr, int max_attr,
Odr_int *attr_list,
char **attr_clist,
Odr_oid **attr_set)
{
YAZ_PQF_Parser pqf_parser = yaz_pqf_create();
struct yaz_pqf_parser *li = pqf_parser;
- Odr_oid *attributeSetId;
+ Odr_oid *attributeSetId = 0;
Z_FacetField *facet_field = 0;
Z_AttributeList *attribute_list;
facet_field->terms[facet_field->num_terms] =
(Z_FacetTerm *) odr_malloc(odr, sizeof(Z_FacetTerm));
facet_field->terms[facet_field->num_terms]->term = term;
- facet_field->terms[facet_field->num_terms]->count =
+ facet_field->terms[facet_field->num_terms]->count =
odr_intdup(odr, 0);
facet_field->num_terms++;
}