X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Flogrpn.c;h=fbcd0ab640e7f27c147eb9a414eae173aea77356;hp=3da47d3abc543695dd07d9f85a5cb29f23f65711;hb=64f21c5f41690ce42f89bedae8c5ba72bdd12365;hpb=43a7aff23f364fd3fac6e9746c53cda01be13738 diff --git a/src/logrpn.c b/src/logrpn.c index 3da47d3..fbcd0ab 100644 --- a/src/logrpn.c +++ b/src/logrpn.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2005, Index Data ApS * All rights reserved. * - * $Id: logrpn.c,v 1.12 2005-08-22 20:34:21 adam Exp $ + * $Id: logrpn.c,v 1.14 2006-01-20 10:34:51 adam Exp $ */ /** @@ -16,7 +16,6 @@ #include #include - static const char *relToStr(int v) { const char *str = 0; @@ -53,126 +52,126 @@ static void attrStr (int type, int value, enum oid_value ast, char *str) case 2: rstr = relToStr(value); if (rstr) - sprintf (str, "relation=%s", rstr); + sprintf(str, "relation=%s", rstr); else - sprintf (str, "relation=%d", value); + sprintf(str, "relation=%d", value); break; case 3: switch (value) { case 1: - sprintf (str, "position=First in field"); + sprintf(str, "position=First in field"); break; case 2: - sprintf (str, "position=First in any subfield"); + sprintf(str, "position=First in any subfield"); break; case 3: - sprintf (str, "position=Any position in field"); + sprintf(str, "position=Any position in field"); break; default: - sprintf (str, "position"); + sprintf(str, "position"); } break; case 4: switch (value) { case 1: - sprintf (str, "structure=Phrase"); + sprintf(str, "structure=Phrase"); break; case 2: - sprintf (str, "structure=Word"); + sprintf(str, "structure=Word"); break; case 3: - sprintf (str, "structure=Key"); + sprintf(str, "structure=Key"); break; case 4: - sprintf (str, "structure=Year"); + sprintf(str, "structure=Year"); break; case 5: - sprintf (str, "structure=Date"); + sprintf(str, "structure=Date"); break; case 6: - sprintf (str, "structure=Word list"); + sprintf(str, "structure=Word list"); break; case 100: - sprintf (str, "structure=Date (un)"); + sprintf(str, "structure=Date (un)"); break; case 101: - sprintf (str, "structure=Name (norm)"); + sprintf(str, "structure=Name (norm)"); break; case 102: - sprintf (str, "structure=Name (un)"); + sprintf(str, "structure=Name (un)"); break; case 103: - sprintf (str, "structure=Structure"); + sprintf(str, "structure=Structure"); break; case 104: - sprintf (str, "structure=urx"); + sprintf(str, "structure=urx"); break; case 105: - sprintf (str, "structure=free-form-text"); + sprintf(str, "structure=free-form-text"); break; case 106: - sprintf (str, "structure=document-text"); + sprintf(str, "structure=document-text"); break; case 107: - sprintf (str, "structure=local-number"); + sprintf(str, "structure=local-number"); break; case 108: - sprintf (str, "structure=string"); + sprintf(str, "structure=string"); break; case 109: - sprintf (str, "structure=numeric string"); + sprintf(str, "structure=numeric string"); break; default: - sprintf (str, "structure"); + sprintf(str, "structure"); } break; case 5: switch (value) { case 1: - sprintf (str, "truncation=Right"); + sprintf(str, "truncation=Right"); break; case 2: - sprintf (str, "truncation=Left"); + sprintf(str, "truncation=Left"); break; case 3: - sprintf (str, "truncation=Left&right"); + sprintf(str, "truncation=Left&right"); break; case 100: - sprintf (str, "truncation=Do not truncate"); + sprintf(str, "truncation=Do not truncate"); break; case 101: - sprintf (str, "truncation=Process #"); + sprintf(str, "truncation=Process #"); break; case 102: - sprintf (str, "truncation=re-1"); + sprintf(str, "truncation=re-1"); break; case 103: - sprintf (str, "truncation=re-2"); + sprintf(str, "truncation=re-2"); break; case 104: - sprintf (str, "truncation=CCL"); + sprintf(str, "truncation=CCL"); break; default: - sprintf (str, "truncation"); + sprintf(str, "truncation"); } break; case 6: - switch (value) + switch(value) { case 1: - sprintf (str, "completeness=Incomplete subfield"); + sprintf(str, "completeness=Incomplete subfield"); break; case 2: - sprintf (str, "completeness=Complete subfield"); + sprintf(str, "completeness=Complete subfield"); break; case 3: - sprintf (str, "completeness=Complete field"); + sprintf(str, "completeness=Complete field"); break; default: - sprintf (str, "completeness"); + sprintf(str, "completeness"); } break; } @@ -181,71 +180,9 @@ static void attrStr (int type, int value, enum oid_value ast, char *str) break; } if (*str) - sprintf (str + strlen(str), " (%d=%d)", type, value); - else - sprintf (str, "%d=%d", type, value); -} - -static void wrbuf_term(WRBUF b, const char *term, int len) -{ - int i; - for (i = 0; i < len; i++) - if (strchr(" \"{", term[i])) - break; - if (i == len && i) - wrbuf_printf(b, "%.*s ", len, term); + sprintf(str + strlen(str), " (%d=%d)", type, value); else - { - wrbuf_putc(b, '"'); - for (i = 0; iattributeSet) - { - oident *attrset; - attrset = oid_getentbyoid (element->attributeSet); - setname = attrset->desc; - sep = " "; - } - switch (element->which) - { - case Z_AttributeValue_numeric: - wrbuf_printf(b,"@attr %s%s%d=%d ", setname, sep, - *element->attributeType, *element->value.numeric); - break; - case Z_AttributeValue_complex: - wrbuf_printf(b,"@attr %s%s\"%d=", setname, sep, - *element->attributeType); - for (i = 0; ivalue.complex->num_list; i++) - { - if (i) - wrbuf_printf(b,","); - if (element->value.complex->list[i]->which == - Z_StringOrNumeric_string) - wrbuf_printf (b, "%s", - element->value.complex->list[i]->u.string); - else if (element->value.complex->list[i]->which == - Z_StringOrNumeric_numeric) - wrbuf_printf (b, "%d", - *element->value.complex->list[i]->u.numeric); - } - wrbuf_printf(b, "\" "); - break; - default: - wrbuf_printf (b, "@attr 1=unknown "); - } + sprintf(str, "%d=%d", type, value); } /* @@ -407,90 +344,6 @@ static void zlog_structure (Z_RPNStructure *zs, int depth, yaz_log (loglevel, "%*.0s unknown structure", depth, ""); } -static void wrbuf_apt(WRBUF b, Z_AttributesPlusTerm *zapt) -{ - int num_attributes = zapt->attributes->num_attributes; - int i; - for (i = 0; iattributes->attributes[i]); - - switch (zapt->term->which) - { - case Z_Term_general: - wrbuf_term(b, (const char *)zapt->term->u.general->buf, - zapt->term->u.general->len); - break; - case Z_Term_characterString: - wrbuf_printf(b, "@term string "); - wrbuf_term (b, zapt->term->u.characterString, - strlen(zapt->term->u.characterString)); - break; - case Z_Term_numeric: - wrbuf_printf(b, "@term numeric %d ", *zapt->term->u.numeric); - break; - case Z_Term_null: - wrbuf_printf(b, "@term null x"); - break; - default: - wrbuf_printf(b, "@term null unknown%d ", zapt->term->which); - } -} - -static void wrbuf_structure (WRBUF b, Z_RPNStructure *zs, enum oid_value ast) -{ - if (zs->which == Z_RPNStructure_complex) - { - Z_Operator *op = zs->u.complex->roperator; - wrbuf_printf(b, "@%s ", complex_op_name(op) ); - if (op->which== Z_Operator_prox) - { - if (!op->u.prox->exclusion) - wrbuf_putc(b, 'n'); - else if (*op->u.prox->exclusion) - wrbuf_putc(b, '1'); - else - wrbuf_putc(b, '0'); - - wrbuf_printf(b, " %d %d %d ", *op->u.prox->distance, - *op->u.prox->ordered, - *op->u.prox->relationType); - - switch(op->u.prox->which) - { - case Z_ProximityOperator_known: - wrbuf_putc(b, 'k'); - break; - case Z_ProximityOperator_private: - wrbuf_putc(b, 'p'); - break; - default: - wrbuf_printf(b, "%d", op->u.prox->which); - } - if (op->u.prox->u.known) - wrbuf_printf(b, " %d ", *op->u.prox->u.known); - else - wrbuf_printf(b, " 0 "); - } - wrbuf_structure (b,zs->u.complex->s1, ast); - wrbuf_structure (b,zs->u.complex->s2, ast); - } - else if (zs->which == Z_RPNStructure_simple) - { - if (zs->u.simple->which == Z_Operand_APT) - wrbuf_apt(b, zs->u.simple->u.attributesPlusTerm); - else if (zs->u.simple->which == Z_Operand_resultSetId) - { - wrbuf_printf(b, "@set "); - wrbuf_term(b, zs->u.simple->u.resultSetId, - strlen(zs->u.simple->u.resultSetId)); - } - else - wrbuf_printf (b, "(unknown simple structure)"); - } - else - wrbuf_puts(b, "(unknown structure)"); -} - void log_rpn_query_level (int loglevel, Z_RPNQuery *rpn) { oident *attrset; @@ -510,33 +363,13 @@ void log_rpn_query_level (int loglevel, Z_RPNQuery *rpn) zlog_structure (rpn->RPNStructure, 0, ast, loglevel); } -static void wrbuf_rpn_query(WRBUF b, Z_RPNQuery *rpn) -{ - oident *attrset; - enum oid_value ast; - - attrset = oid_getentbyoid (rpn->attributeSetId); - if (attrset) - { - ast = attrset->value; - wrbuf_printf(b, " @attrset %s ", attrset->desc); - } - else - { - ast = VAL_NONE; - wrbuf_printf (b, "Unknown:"); - } - wrbuf_structure (b,rpn->RPNStructure, ast); - -} - -void log_rpn_query (Z_RPNQuery *rpn) +void log_rpn_query(Z_RPNQuery *rpn) { log_rpn_query_level(YLOG_LOG, rpn); } -void log_scan_term_level (int loglevel, - Z_AttributesPlusTerm *zapt, oid_value ast) +void log_scan_term_level(int loglevel, + Z_AttributesPlusTerm *zapt, oid_value ast) { int depth = 0; if (!loglevel) @@ -551,16 +384,11 @@ void log_scan_term_level (int loglevel, zlog_attributes (zapt, depth+2, ast, loglevel); } -void log_scan_term (Z_AttributesPlusTerm *zapt, oid_value ast) +void log_scan_term(Z_AttributesPlusTerm *zapt, oid_value ast) { log_scan_term_level (YLOG_LOG, zapt, ast); } -void wrbuf_scan_term(WRBUF b, Z_AttributesPlusTerm *zapt, oid_value ast) -{ - wrbuf_apt(b, zapt); -} - void yaz_log_zquery_level (int loglevel, Z_Query *q) { if (!loglevel) @@ -585,33 +413,7 @@ void yaz_log_zquery_level (int loglevel, Z_Query *q) void yaz_log_zquery (Z_Query *q) { - yaz_log_zquery_level(YLOG_LOG,q); -} - -void wrbuf_put_zquery(WRBUF b, Z_Query *q) -{ - assert(q); - assert(b); - switch (q->which) - { - case Z_Query_type_1: - case Z_Query_type_101: - wrbuf_printf(b,"RPN:"); - wrbuf_rpn_query(b,q->u.type_1); - break; - case Z_Query_type_2: - wrbuf_printf(b, "CCL: %.*s", q->u.type_2->len, q->u.type_2->buf); - break; - case Z_Query_type_100: - wrbuf_printf(b, "Z39.58: %.*s", q->u.type_100->len, - q->u.type_100->buf); - break; - case Z_Query_type_104: - if (q->u.type_104->which == Z_External_CQL) - wrbuf_printf(b, "CQL: %s", q->u.type_104->u.cql); - else - wrbuf_printf(b,"Unknown type 104 query %d", q->u.type_104->which); - } + yaz_log_zquery_level(YLOG_LOG, q); } void wrbuf_diags(WRBUF b, int num_diagnostics,Z_DiagRec **diags)