X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=ccl%2Fcclqual.c;h=c19dede86d15964b6dc07201aef3b9aa680dee91;hb=a7b99c21cc2445c19d3f76150049b42a96631b48;hp=0196de241dc3da2681b3e003a9b407b243214d36;hpb=ba3b08ceb55b7448c0022892d6d013a107b26ab7;p=yaz-moved-to-github.git diff --git a/ccl/cclqual.c b/ccl/cclqual.c index 0196de2..c19dede 100644 --- a/ccl/cclqual.c +++ b/ccl/cclqual.c @@ -45,7 +45,18 @@ * Europagate, 1995 * * $Log: cclqual.c,v $ - * Revision 1.11 1999-03-31 11:15:37 adam + * Revision 1.14 2000-11-16 09:58:02 adam + * Implemented local AttributeSet setting for CCL field maps. + * + * Revision 1.13 2000/01/31 13:15:21 adam + * Removed uses of assert(3). Cleanup of ODR. CCL parser update so + * that some characters are not surrounded by spaces in resulting term. + * ILL-code updates. + * + * Revision 1.12 1999/11/30 13:47:11 adam + * Improved installation. Moved header files to include/yaz. + * + * Revision 1.11 1999/03/31 11:15:37 adam * Fixed memory leaks in ccl_find_str and ccl_qual_rm. * * Revision 1.10 1998/07/07 15:49:40 adam @@ -101,10 +112,9 @@ #include #include -#include #include -#include +#include /* Definition of CCL_bibset pointer */ struct ccl_qualifiers { @@ -120,25 +130,27 @@ struct ccl_qualifiers { * pairs: Attributes. pairs[0] first type, pair[1] first value, * ... pair[2*no-2] last type, pair[2*no-1] last value. */ -void ccl_qual_add (CCL_bibset b, const char *name, int no, int *pairs) +void ccl_qual_add_set (CCL_bibset b, const char *name, int no, int *pairs, + char **attsets) { struct ccl_qualifier *q; struct ccl_rpn_attr **attrp; - assert (b); + ccl_assert (b); for (q = b->list; q; q = q->next) if (!strcmp (name, q->name)) break; if (!q) { - struct ccl_qualifier *new_qual = (struct ccl_qualifier *)malloc (sizeof(*new_qual)); - assert (new_qual); + struct ccl_qualifier *new_qual = + (struct ccl_qualifier *)malloc (sizeof(*new_qual)); + ccl_assert (new_qual); new_qual->next = b->list; b->list = new_qual; new_qual->name = (char *)malloc (strlen(name)+1); - assert (new_qual->name); + ccl_assert (new_qual->name); strcpy (new_qual->name, name); attrp = &new_qual->attr_list; } @@ -153,7 +165,8 @@ void ccl_qual_add (CCL_bibset b, const char *name, int no, int *pairs) struct ccl_rpn_attr *attr; attr = (struct ccl_rpn_attr *)malloc (sizeof(*attr)); - assert (attr); + ccl_assert (attr); + attr->set = *attsets++; attr->type = *pairs++; attr->value = *pairs++; *attrp = attr; @@ -169,7 +182,7 @@ void ccl_qual_add (CCL_bibset b, const char *name, int no, int *pairs) CCL_bibset ccl_qual_mk (void) { CCL_bibset b = (CCL_bibset)malloc (sizeof(*b)); - assert (b); + ccl_assert (b); b->list = NULL; return b; } @@ -191,6 +204,8 @@ void ccl_qual_rm (CCL_bibset *b) for (attr = q->attr_list; attr; attr = attr1) { attr1 = attr->next; + if (attr->set) + free (attr->set); free (attr); } q1 = q->next; @@ -213,7 +228,7 @@ struct ccl_rpn_attr *ccl_qual_search (CCL_parser cclp, { struct ccl_qualifier *q; - assert (cclp); + ccl_assert (cclp); if (!cclp->bibset) return NULL; for (q = cclp->bibset->list; q; q = q->next)