X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=ztest%2Fztest.c;h=d0614223e8a540152332110f11240f2b202d344b;hb=825d22351b1d59c71e98357b4931bf7bb67daa3a;hp=1396c4e70c834f6faf19e6ce86330963ee040d1e;hpb=3b96525a40981e162b959f3e842e0ff20e314320;p=yaz-moved-to-github.git diff --git a/ztest/ztest.c b/ztest/ztest.c index 1396c4e..d061422 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.67 2004-11-18 15:18:14 heikki Exp $ + * $Id: ztest.c,v 1.71 2005-01-15 19:47:16 adam Exp $ */ /* @@ -536,6 +536,13 @@ int ztest_scan(void *handle, bend_scan_rr *q) int term_position_req = q->term_position; int num_entries_req = q->num_entries; + if (yaz_matchstr (q->basenames[0], "Default")) + { + q->errcode = 109; + q->errstring = q->basenames[0]; + return 0; + } + q->errcode = 0; q->errstring = 0; q->entries = list; @@ -545,30 +552,40 @@ 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(*p)) + if (islower(*(unsigned char *) p)) *p = toupper(*p); fseek(f, 0, SEEK_SET); @@ -658,6 +675,7 @@ 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; return r; }