X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=ztest%2Fztest.c;h=83078339b7bc1500b5d6c654def7cab79338478b;hp=e7502124b3691e47d2e27288e6fcb370783cc329;hb=c519e4716646be3b24f7d4d3de99e06e423da865;hpb=99deca38579f9e6c01550312e8004477a26921a8 diff --git a/ztest/ztest.c b/ztest/ztest.c index e750212..8307833 100644 --- a/ztest/ztest.c +++ b/ztest/ztest.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 1995-2004, Index Data. + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: ztest.c,v 1.69 2005-01-11 10:44:07 adam Exp $ + * $Id: ztest.c,v 1.72 2005-02-01 14:46:48 adam Exp $ */ /* @@ -24,13 +24,13 @@ Z_GenericRecord *dummy_grs_record (int num, ODR o); char *dummy_marc_record (int num, ODR odr); char *dummy_xml_record (int num, ODR odr); -int ztest_search (void *handle, bend_search_rr *rr); -int ztest_sort (void *handle, bend_sort_rr *rr); -int ztest_present (void *handle, bend_present_rr *rr); -int ztest_esrequest (void *handle, bend_esrequest_rr *rr); -int ztest_delete (void *handle, bend_delete_rr *rr); +int ztest_search(void *handle, bend_search_rr *rr); +int ztest_sort(void *handle, bend_sort_rr *rr); +int ztest_present(void *handle, bend_present_rr *rr); +int ztest_esrequest(void *handle, bend_esrequest_rr *rr); +int ztest_delete(void *handle, bend_delete_rr *rr); -int ztest_search (void *handle, bend_search_rr *rr) +int ztest_search(void *handle, bend_search_rr *rr) { if (rr->num_bases != 1) { @@ -552,28 +552,38 @@ int ztest_scan(void *handle, bend_scan_rr *q) perror("dummy-words"); exit(1); } - if (q->term->term->which != Z_Term_general) - { - q->errcode = 229; /* unsupported term type */ - return 0; - } - if (*q->step_size != 0) + if (q->num_entries > 200) { - q->errcode = 205; /*Only zero step size supported for Scan */ + q->errcode = 31; return 0; } - if (q->term->term->u.general->len >= 80) + if (q->term) { - q->errcode = 11; /* term too long */ - return 0; + int len; + if (q->term->term->which != Z_Term_general) + { + q->errcode = 229; /* unsupported term type */ + return 0; + } + if (*q->step_size != 0) + { + q->errcode = 205; /*Only zero step size supported for Scan */ + return 0; + } + len = q->term->term->u.general->len; + if (len >= sizeof(term)) + len = sizeof(term)-1; + memcpy(term, q->term->term->u.general->buf, len); + term[len] = '\0'; } - if (q->num_entries > 200) + else if (q->scanClause) { - q->errcode = 31; - return 0; + strncpy(term, q->scanClause, sizeof(term)-1); + term[sizeof(term)-1] = '\0'; } - memcpy(term, q->term->term->u.general->buf, q->term->term->u.general->len); - term[q->term->term->u.general->len] = '\0'; + else + strcpy(term, "0"); + for (p = term; *p; p++) if (islower(*(unsigned char *) p)) *p = toupper(*p); @@ -665,12 +675,19 @@ bend_initresult *bend_init(bend_initrequest *q) q->bend_fetch = ztest_fetch; q->bend_scan = ztest_scan; q->bend_explain = ztest_explain; + q->bend_srw_scan = ztest_scan; + + yaz_log(YLOG_LOG, "ztest_init handle=%p control=%p", + counter, statserv_getcontrol()); return r; } void bend_close(void *handle) { + yaz_log(YLOG_LOG, "ztest_close handle=%p control=%p", + handle, statserv_getcontrol()); + xfree (handle); /* release our user-defined handle */ return; }