* Europagate, 1995
*
* $Log: cclfind.c,v $
- * Revision 1.13 1999-12-22 13:13:32 adam
+ * Revision 1.14 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.13 1999/12/22 13:13:32 adam
* Search terms may include "operators" without causing error.
*
* Revision 1.12 1999/11/30 13:47:11 adam
#include <stdio.h>
#include <stdlib.h>
-#include <assert.h>
#include <string.h>
#include <yaz/ccl.h>
static char *copy_token_name (struct ccl_token *tp)
{
char *str = (char *)malloc (tp->len + 1);
- assert (str);
+ ccl_assert (str);
memcpy (str, tp->name, tp->len);
str[tp->len] = '\0';
return str;
{
struct ccl_rpn_node *p;
p = (struct ccl_rpn_node *)malloc (sizeof(*p));
- assert (p);
+ ccl_assert (p);
p->kind = kind;
return p;
}
struct ccl_rpn_attr *n;
n = (struct ccl_rpn_attr *)malloc (sizeof(*n));
- assert (n);
+ ccl_assert (n);
n->type = type;
n->value = value;
n->next = p->u.t.attr_list;
/* no qualifier(s) applied. Use 'term' if it is defined */
qa = (struct ccl_rpn_attr **)malloc (2*sizeof(*qa));
- assert (qa);
+ ccl_assert (qa);
qa[0] = ccl_qual_search (cclp, "term", 4);
qa[1] = NULL;
}
/* make the RPN token */
p->u.t.term = (char *)malloc (len);
- assert (p->u.t.term);
+ ccl_assert (p->u.t.term);
p->u.t.term[0] = '\0';
for (i = 0; i<no; i++)
{
}
else if (i == no-1 && right_trunc)
src_len--;
- if (i)
- strcat (p->u.t.term, " ");
+ if (src_len)
+ {
+ int len = strlen(p->u.t.term);
+ if (len &&
+ !strchr("-+", *src_str) &&
+ !strchr("-+", p->u.t.term[len-1]))
+ {
+ strcat (p->u.t.term, " ");
+ }
+ }
strxcat (p->u.t.term, src_str, src_len);
ADVANCE;
}
for (i=0; qa[i]; i++)
no++;
ap = (struct ccl_rpn_attr **)malloc ((no+1) * sizeof(*ap));
- assert (ap);
+ ccl_assert (ap);
for (i = 0; cclp->look_token != la; i++)
{
ap[i] = ccl_qual_search (cclp, cclp->look_token->name,