X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fcclptree.c;h=9d80e3e32d566370805749366f70d08d47c5944c;hp=d53345b620cf467553bfa94363cd137e10223bd4;hb=7143bc8f77ac03fdb6f36f30b16cf64c2d6cc3e2;hpb=65371f5d5f265a4c5ee43f784b2d8a6db1e0774a diff --git a/src/cclptree.c b/src/cclptree.c index d53345b..9d80e3e 100644 --- a/src/cclptree.c +++ b/src/cclptree.c @@ -1,21 +1,23 @@ -/* - * Copyright (C) 1995-2008, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) Index Data * See the file LICENSE for details. - * - * $Id: cclptree.c,v 1.11 2008-01-09 21:32:27 adam Exp $ */ -/** +/** * \file cclptree.c * \brief Implements CCL parse tree printing * * This source file implements functions to parse and print * a CCL node tree (as a result of parsing). */ +#if HAVE_CONFIG_H +#include +#endif #include #include -#include +#include +#include #include static void ccl_pquery_indent(WRBUF w, struct ccl_rpn_node *p, int indent); @@ -41,17 +43,17 @@ static void ccl_pquery_complex(WRBUF w, struct ccl_rpn_node *p, int indent) const char *cp = p->u.p[2]->u.t.term; /* exlusion distance ordered relation which-code unit-code */ if (*cp == '!') - { + { /* word order specified */ - if (isdigit(((const unsigned char *) cp)[1])) + if (yaz_isdigit(cp[1])) wrbuf_printf(w, "@prox 0 %s 1 2 k 2", cp+1); else wrbuf_printf(w, "@prox 0 1 1 2 k 2"); - } + } else if (*cp == '%') { /* word order not specified */ - if (isdigit(((const unsigned char *) cp)[1])) + if (yaz_isdigit(cp[1])) wrbuf_printf(w, "@prox 0 %s 0 2 k 2", cp+1); else wrbuf_printf(w, "@prox 0 1 0 2 k 2"); @@ -70,19 +72,7 @@ static void ccl_pquery_complex(WRBUF w, struct ccl_rpn_node *p, int indent) static void ccl_prterm(WRBUF w, const char *term) { - if (!*term) - wrbuf_puts(w, "\"\""); - else - { - const char *cp = term; - for (; *cp; cp++) - { - if (*cp == ' ' || *cp == '\\') - wrbuf_putc(w, '\\'); - wrbuf_putc(w, *cp); - } - } - wrbuf_puts(w, " "); + yaz_encode_pqf_term(w, term, strlen(term)); } static void ccl_pquery_indent(WRBUF w, struct ccl_rpn_node *p, int indent) @@ -152,7 +142,7 @@ void ccl_pr_tree(struct ccl_rpn_node *rpn, FILE *fd_out) WRBUF w = wrbuf_alloc(); ccl_pquery_indent(w, rpn, 0); - + fputs(wrbuf_cstr(w), fd_out); wrbuf_destroy(w); } @@ -160,6 +150,7 @@ void ccl_pr_tree(struct ccl_rpn_node *rpn, FILE *fd_out) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab