From: Adam Dickmeiss Date: Wed, 19 Nov 2003 19:07:26 +0000 (+0000) Subject: Implement ZOOM_scanset_display_term X-Git-Tag: YAZ.2.0.6~26 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=8d92137c228ec24df2d62a8039635bb8ad19558d Implement ZOOM_scanset_display_term --- diff --git a/CHANGELOG b/CHANGELOG index 534ce72..d5199db 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,10 @@ Possible compatibility problems with earlier versions marked with '*'. --- (IN PROGRESS) +Add function ZOOM_scanset_display_term. + +For Scan yaz-client shows displayTerm if present. + Utility yaz-iconv is now installed by default along with the man page yaz-iconv.1. diff --git a/doc/frontend.xml b/doc/frontend.xml index a455153..01d1933 100644 --- a/doc/frontend.xml +++ b/doc/frontend.xml @@ -1,4 +1,4 @@ - + Generic server Introduction @@ -817,7 +817,7 @@ typedef struct bend_scan_rr { The above for the Apache 1.3 series. - Running a aerver with local access only + Running a server with local access only Servers that is only being accessed from the local host should listen on UNIX file socket rather than a Internet socket. To listen on diff --git a/doc/zoom.xml b/doc/zoom.xml index 816eb13..36201ae 100644 --- a/doc/zoom.xml +++ b/doc/zoom.xml @@ -1,4 +1,4 @@ - + ZOOM &zoom; is an acronym for 'Z39.50 Object-Orientation Model' and is @@ -694,6 +694,8 @@ const char * ZOOM_scanset_term(ZOOM_scanset scan, size_t pos, int *occ, size_t *len); + const char * ZOOM_scanset_display_term(ZOOM_scanset scan, size_t pos, + int *occ, size_t *len); void ZOOM_scanset_destroy (ZOOM_scanset scan); @@ -706,17 +708,26 @@ The scan set is created by function ZOOM_connection_scan which performs a scan - operation on the connection and start term given. + operation on the connection using the specified startterm. If the operation was successful, the size of the scan set can be retrieved by a call to ZOOM_scanset_size. Like result sets, the items are numbered 0,..size-1. To obtain information about a particular scan term, call function ZOOM_scanset_term. This function takes a scan set offset pos and returns a pointer - to an actual term or NULL if non-present. + to a raw term or NULL if + non-present. If present, the occ and len are set to the number of occurrences and the length of the actual term respectively. + ZOOM_scanset_display_term is similar to + ZOOM_scanset_term except that it returns + the display term rather than the raw term. + In a few cases, the term is different from display term. Always + use the display term for display and the raw term for subsequent + scan operations (to get more terms, next scan result, etc). + + A scan set may be freed by a call to function ZOOM_scanset_destroy. Functions ZOOM_scanset_option_get and diff --git a/include/yaz/zoom.h b/include/yaz/zoom.h index f9329c1..301e1c3 100644 --- a/include/yaz/zoom.h +++ b/include/yaz/zoom.h @@ -1,6 +1,6 @@ /* * Public header for ZOOM C. - * $Id: zoom.h,v 1.18 2003-04-28 11:04:52 adam Exp $ + * $Id: zoom.h,v 1.19 2003-11-19 19:07:26 adam Exp $ */ #include @@ -189,6 +189,10 @@ ZOOM_API(const char *) ZOOM_scanset_term(ZOOM_scanset scan, size_t pos, int *occ, int *len); +ZOOM_API(const char *) +ZOOM_scanset_display_term(ZOOM_scanset scan, size_t pos, + int *occ, int *len); + ZOOM_API(size_t) ZOOM_scanset_size(ZOOM_scanset scan); diff --git a/src/zoom-c.c b/src/zoom-c.c index 188ddf7..492c190 100644 --- a/src/zoom-c.c +++ b/src/zoom-c.c @@ -2,7 +2,7 @@ * Copyright (c) 2000-2003, Index Data * See the file LICENSE for details. * - * $Id: zoom-c.c,v 1.3 2003-11-17 16:01:12 mike Exp $ + * $Id: zoom-c.c,v 1.4 2003-11-19 19:07:26 adam Exp $ * * ZOOM layer for C, connections, result sets, queries. */ @@ -928,7 +928,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c) impver = ZOOM_options_get (c->options, "implementationVersion"); ireq->implementationVersion = - (char *) odr_malloc (c->odr_out, strlen("$Revision: 1.3 $") + 2 + + (char *) odr_malloc (c->odr_out, strlen("$Revision: 1.4 $") + 2 + (impver ? strlen(impver) : 0)); strcpy (ireq->implementationVersion, ""); if (impver) @@ -936,7 +936,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c) strcat (ireq->implementationVersion, impver); strcat (ireq->implementationVersion, "/"); } - strcat (ireq->implementationVersion, "$Revision: 1.3 $"); + strcat (ireq->implementationVersion, "$Revision: 1.4 $"); *ireq->maximumRecordSize = ZOOM_options_get_int (c->options, "maximumRecordSize", 1024*1024); @@ -2150,7 +2150,7 @@ ZOOM_scanset_size (ZOOM_scanset scan) ZOOM_API(const char *) ZOOM_scanset_term (ZOOM_scanset scan, size_t pos, - int *occ, int *len) + int *occ, int *len) { const char *term = 0; size_t noent = ZOOM_scanset_size (scan); @@ -2175,6 +2175,37 @@ ZOOM_scanset_term (ZOOM_scanset scan, size_t pos, } ZOOM_API(const char *) +ZOOM_scanset_display_term (ZOOM_scanset scan, size_t pos, + int *occ, int *len) +{ + const char *term = 0; + size_t noent = ZOOM_scanset_size (scan); + Z_ScanResponse *res = scan->scan_response; + + *len = 0; + *occ = 0; + if (pos >= noent) + return 0; + if (res->entries->entries[pos]->which == Z_Entry_termInfo) + { + Z_TermInfo *t = res->entries->entries[pos]->u.termInfo; + + if (t->displayTerm) + { + term = (const char *) t->term->u.general->buf; + *len = strlen(term); + } + else if (t->term->which == Z_Term_general) + { + term = (const char *) t->term->u.general->buf; + *len = t->term->u.general->len; + } + *occ = t->globalOccurrences ? *t->globalOccurrences : 0; + } + return term; +} + +ZOOM_API(const char *) ZOOM_scanset_option_get (ZOOM_scanset scan, const char *key) { return ZOOM_options_get (scan->options, key);