/*
- * 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 $
*/
/*
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)
{
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);
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;
}