X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fzrpn.c;h=07f009119d74f6485b8402e55d1d8999be80fe8b;hb=3b728a4683973b29bdb8eef0347cc79b01ff3e93;hp=daf07bda6e7eb7a8e24a5d6f01055c824d03be12;hpb=ce3907338568fce46c5751e7e1091a5ad1c8e291;p=idzebra-moved-to-github.git diff --git a/index/zrpn.c b/index/zrpn.c index daf07bd..07f0091 100644 --- a/index/zrpn.c +++ b/index/zrpn.c @@ -4,7 +4,19 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zrpn.c,v $ - * Revision 1.75 1998-03-05 08:45:13 adam + * Revision 1.78 1998-06-08 14:43:17 adam + * Added suport for EXPLAIN Proxy servers - added settings databasePath + * and explainDatabase to facilitate this. Increased maximum number + * of databases and attributes in one register. + * + * Revision 1.77 1998/05/20 10:12:22 adam + * Implemented automatic EXPLAIN database maintenance. + * Modified Zebra to work with ASN.1 compiled version of YAZ. + * + * Revision 1.76 1998/04/02 14:35:29 adam + * First version of Zebra that works with compiled ASN.1. + * + * Revision 1.75 1998/03/05 08:45:13 adam * New result set model and modular ranking system. Moved towards * descent server API. System information stored as "SGML" records. * @@ -304,11 +316,22 @@ typedef struct { static int attr_find (AttrType *src, oid_value *attributeSetP) { - while (src->major < src->zapt->num_attributes) + int num_attributes; + +#ifdef ASN_COMPILED + num_attributes = src->zapt->attributes->num_attributes; +#else + num_attributes = src->zapt->num_attributes; +#endif + while (src->major < num_attributes) { Z_AttributeElement *element; +#ifdef ASN_COMPILED + element = src->zapt->attributes->attributes[src->major]; +#else element = src->zapt->attributeList[src->major]; +#endif if (src->type == *element->attributeType) { switch (element->which) @@ -417,9 +440,10 @@ static void add_isam_p (const char *name, const char *info, assert (*info == sizeof(*p->isam_p_buf)); memcpy (p->isam_p_buf + p->isam_p_indx, info+1, sizeof(*p->isam_p_buf)); +#if 0 term_untrans (p->zh, p->reg_type, term_tmp, name+2); logf (LOG_DEBUG, "grep: %s", term_tmp); - +#endif (p->isam_p_indx)++; } @@ -811,6 +835,8 @@ static int field_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, local_attr = local_attr->next) { int ord; + char ord_buf[32]; + int i, ord_len; ord = zebraExplain_lookupSU (zh->zei, attp.attset_ordinal, local_attr->local); @@ -820,8 +846,13 @@ static int field_term (ZebraHandle zh, Z_AttributesPlusTerm *zapt, term_dict[prefix_len++] = '|'; else term_dict[prefix_len++] = '('; - term_dict[prefix_len++] = 1; - term_dict[prefix_len++] = ord; + + ord_len = key_SU_code (ord, ord_buf); + for (i = 0; iu.prox->which != Z_ProximityOperator_known) + { + zh->errCode = 132; + return NULL; + } +#else if (zop->u.prox->which != Z_ProxCode_known) { zh->errCode = 132; return NULL; } +#endif + +#ifdef ASN_COMPILED + if (*zop->u.prox->u.known != Z_ProxUnit_word) + { + char *val = odr_malloc (stream, 16); + zh->errCode = 132; + zh->errString = val; + sprintf (val, "%d", *zop->u.prox->u.known); + return NULL; + } +#else if (*zop->u.prox->proximityUnitCode != Z_ProxUnit_word) { char *val = odr_malloc (stream, 16); @@ -1479,6 +1529,7 @@ static RSET rpn_search_structure (ZebraHandle zh, Z_RPNStructure *zs, sprintf (val, "%d", *zop->u.prox->proximityUnitCode); return NULL; } +#endif r = rpn_proximity (zh, bool_parms.rset_l, bool_parms.rset_r, *zop->u.prox->ordered, (!zop->u.prox->exclusion ? 0 : @@ -1579,9 +1630,9 @@ static int scan_handle (char *name, const char *info, int pos, void *client) } static void scan_term_untrans (ZebraHandle zh, ODR stream, int reg_type, - char **dstp, const char *src) + char **dst, const char *src) { - char term_dst[1024], **dst; + char term_dst[1024]; term_untrans (zh, reg_type, term_dst, src); @@ -1714,7 +1765,8 @@ void rpn_scan (ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt, sizeof(*scan_info->list)); for (j = 0; jlist[j].term = NULL; - termz[prefix_len++] = ords[i]; + + prefix_len += key_SU_code (ords[i], termz + prefix_len); termz[prefix_len++] = reg_id; termz[prefix_len] = 0; strcpy (scan_info->prefix, termz);