X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=ztest%2Fztest.c;h=2bbc613b24f5dd81d7eaefdeb1834196257f746a;hb=48fdd95e1a026cfcc20ddd2329f0bda940f936e2;hp=e7502124b3691e47d2e27288e6fcb370783cc329;hpb=99deca38579f9e6c01550312e8004477a26921a8;p=yaz-moved-to-github.git diff --git a/ztest/ztest.c b/ztest/ztest.c index e750212..2bbc613 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.74 2005-03-03 23:16:20 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); @@ -664,7 +674,10 @@ bend_initresult *bend_init(bend_initrequest *q) q->bend_delete = ztest_delete; q->bend_fetch = ztest_fetch; q->bend_scan = ztest_scan; +#if 0 q->bend_explain = ztest_explain; +#endif + q->bend_srw_scan = ztest_scan; return r; }