X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fcclsh.c;h=419fcb719363517b4e10c28963a7ad0c35008c2f;hp=6882ce29f45f527bf1c1790a8c4c34e6f0059e79;hb=30af0a1ebbea75c3e757eb03d3f988c61fce8511;hpb=de80462103c0fc554c8fa40827894f92fa9d8fe6 diff --git a/util/cclsh.c b/util/cclsh.c index 6882ce2..419fcb7 100644 --- a/util/cclsh.c +++ b/util/cclsh.c @@ -1,88 +1,10 @@ -/* - * Copyright (c) 1995, the EUROPAGATE consortium (see below). - * - * The EUROPAGATE consortium members are: - * - * University College Dublin - * Danmarks Teknologiske Videnscenter - * An Chomhairle Leabharlanna - * Consejo Superior de Investigaciones Cientificas - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation, in whole or in part, for any purpose, is hereby granted, - * provided that: - * - * 1. This copyright and permission notice appear in all copies of the - * software and its documentation. Notices of copyright or attribution - * which appear at the beginning of any file must remain unchanged. - * - * 2. The names of EUROPAGATE or the project partners may not be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * 3. Users of this software (implementors and gateway operators) agree to - * inform the EUROPAGATE consortium of their use of the software. This - * information will be used to evaluate the EUROPAGATE project and the - * software, and to plan further developments. The consortium may use - * the information in later publications. - * - * 4. Users of this software agree to make their best efforts, when - * documenting their use of the software, to acknowledge the EUROPAGATE - * consortium, and the role played by the software in their work. - * - * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * IN NO EVENT SHALL THE EUROPAGATE CONSORTIUM OR ITS MEMBERS BE LIABLE - * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF - * ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA - * OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND - * ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ -/* CCL shell. - * Europagate 1995 - * - * $Id: cclsh.c,v 1.6 2007-04-25 20:52:20 adam Exp $ - * - * Old Europagate Log: - * - * Revision 1.11 1995/05/16 09:39:27 adam - * LICENSE. - * - * Revision 1.10 1995/05/11 14:03:57 adam - * Changes in the reading of qualifier(s). New function: ccl_qual_fitem. - * New variable ccl_case_sensitive, which controls whether reserved - * words and field names are case sensitive or not. - * - * Revision 1.9 1995/02/23 08:32:00 adam - * Changed header. - * - * Revision 1.7 1995/02/15 17:42:16 adam - * Minor changes of the api of this module. FILE* argument added - * to ccl_pr_tree. - * - * Revision 1.6 1995/02/14 19:55:13 adam - * Header files ccl.h/cclp.h are gone! They have been merged an - * moved to ../include/ccl.h. - * Node kind(s) in ccl_rpn_node have changed names. - * - * Revision 1.5 1995/02/14 16:20:57 adam - * Qualifiers are read from a file now. - * - * Revision 1.4 1995/02/14 14:12:42 adam - * Ranges for ordered qualfiers implemented (e.g. pd=1980-1990). - * - * Revision 1.3 1995/02/14 10:25:57 adam - * The constructions 'qualifier rel term ...' implemented. - * - * Revision 1.2 1995/02/13 15:15:07 adam - * Added handling of qualifiers. Not finished yet. - * - * Revision 1.1 1995/02/13 12:35:21 adam - * First version of CCL. Qualifiers aren't handled yet. +/* This file is part of the YAZ toolkit. + * Copyright (C) Index Data + * See the file LICENSE for details. */ +#if HAVE_CONFIG_H +#include +#endif #include #include @@ -92,7 +14,7 @@ #include #if HAVE_READLINE_READLINE_H -#include +#include #endif #if HAVE_READLINE_HISTORY_H #include @@ -104,11 +26,11 @@ static char *prog; void usage(const char *prog) { - fprintf (stderr, "%s: [-d] [-b configfile] [-x xmlconfig]\n", prog); - exit (1); + fprintf(stderr, "%s: [-d] [-b configfile] [-x xmlconfig]\n", prog); + exit(1); } -int main (int argc, char **argv) +int main(int argc, char **argv) { CCL_bibset bibset; FILE *bib_inf; @@ -122,8 +44,8 @@ int main (int argc, char **argv) WRBUF q_wrbuf = 0; prog = *argv; - bibset = ccl_qual_mk (); - + bibset = ccl_qual_mk(); + while ((ret = options("db:x:", argv, argc, &arg)) != -2) { switch(ret) @@ -133,15 +55,15 @@ int main (int argc, char **argv) break; case 'b': bib_fname = arg; - bib_inf = fopen (bib_fname, "r"); + bib_inf = fopen(bib_fname, "r"); if (!bib_inf) { - fprintf (stderr, "%s: cannot open %s\n", prog, + fprintf(stderr, "%s: cannot open %s\n", prog, bib_fname); - exit (1); + exit(1); } - ccl_qual_file (bibset, bib_inf); - fclose (bib_inf); + ccl_qual_file(bibset, bib_inf); + fclose(bib_inf); break; #if YAZ_HAVE_XML2 case 'x': @@ -175,24 +97,24 @@ int main (int argc, char **argv) CCL_parser cclp = ccl_parser_create(bibset); int error; struct ccl_rpn_node *rpn; - - rpn = ccl_parser_find_str (cclp, wrbuf_cstr(q_wrbuf)); - + + rpn = ccl_parser_find_str(cclp, wrbuf_cstr(q_wrbuf)); + error = ccl_parser_get_error(cclp, 0); - + if (error) { - printf ("%s\n", ccl_err_msg (error)); + printf("%s\n", ccl_err_msg(error)); } else { if (rpn) { - ccl_pr_tree (rpn, stdout); - printf ("\n"); + ccl_pr_tree(rpn, stdout); + printf("\n"); } } - ccl_parser_destroy (cclp); + ccl_parser_destroy(cclp); if (rpn) ccl_rpn_delete(rpn); wrbuf_destroy(q_wrbuf); @@ -218,46 +140,68 @@ int main (int argc, char **argv) break; } strcpy(buf,line_in); - free (line_in); -#else - printf ("CCLSH>"); fflush (stdout); - if (!fgets (buf, 999, stdin)) + free(line_in); +#else + printf("CCLSH>"); fflush(stdout); + if (!fgets(buf, 999, stdin)) break; -#endif +#endif for (i = 0; i<1; i++) { CCL_parser cclp = ccl_parser_create(bibset); int pos; - + rpn = ccl_parser_find_str(cclp, buf); - + error = ccl_parser_get_error(cclp, &pos); if (error) { - printf ("%*s^ - ", 6+pos, " "); - printf ("%s\n", ccl_err_msg (error)); + printf("%*s^ - ", 6+pos, " "); + printf("%s\n", ccl_err_msg(error)); } else { if (rpn && i == 0) { - ccl_pr_tree (rpn, stdout); - printf ("\n"); + ccl_stop_words_t csw = ccl_stop_words_create(); + int idx = 0; + printf("First:\n"); + ccl_pr_tree(rpn, stdout); + if (ccl_stop_words_tree(csw, bibset, &rpn)) + { + printf("Second:\n"); + ccl_pr_tree(rpn, stdout); + printf("\n"); + + for (idx = 0; ; idx++) + { + const char *qname; + const char *term; + if (!ccl_stop_words_info(csw, idx, + &qname, &term)) + break; + printf("Removed from %s: %s\n", + qname ? qname : "none", term); + } + } + ccl_stop_words_destroy(csw); } } - ccl_parser_destroy (cclp); + ccl_parser_destroy(cclp); if (rpn) ccl_rpn_delete(rpn); } } - printf ("\n"); + printf("\n"); + ccl_qual_rm(&bibset); return 0; } /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab