X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=ztest%2Fgfs-example.c;h=bb96197a4504076f317744f80d293d6e5d6e5fd0;hp=258c83fcd1ffc8826a39b683c956d0f651d45300;hb=4e500dea9790b5ff9ea4fbb3d150c358e3bd2cab;hpb=93f4285bbf2ed5a42fe62f92c7c4618df5f20583 diff --git a/ztest/gfs-example.c b/ztest/gfs-example.c index 258c83f..bb96197 100644 --- a/ztest/gfs-example.c +++ b/ztest/gfs-example.c @@ -1,30 +1,38 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2008 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ - /** \file * \brief Demonstration of Generic Frontend Server API */ +#if HAVE_CONFIG_H +#include +#endif #include #include -#include #include #include #include -#include +#include #include +/* session handle . Put anything you like in here! */ +struct my_handle { + int counter; +}; + static int my_search(void *handle, bend_search_rr *rr) { + struct my_handle *my_p = (struct my_handle *) handle; + if (rr->num_bases != 1) { rr->errcode = YAZ_BIB1_COMBI_OF_SPECIFIED_DATABASES_UNSUPP; return 0; } - /* Throw Database unavailable if other than Default or Slow */ + /* Throw Database unavailable if other than Default */ if (!yaz_matchstr (rr->basenames[0], "Default")) ; /* Default is OK in our test */ else @@ -35,6 +43,7 @@ static int my_search(void *handle, bend_search_rr *rr) } rr->hits = 123; /* dummy hit count */ + my_p->counter++; return 0; } @@ -52,7 +61,8 @@ static int my_fetch(void *handle, bend_fetch_rr *r) { char buf[40]; yaz_snprintf(buf, sizeof(buf), "%d\n", r->number); - + + r->output_format = odr_oiddup(r->stream, yaz_oid_recsyn_xml); r->record = odr_strdup(r->stream, buf); r->len = strlen(r->record); } @@ -69,14 +79,14 @@ static bend_initresult *my_init(bend_initrequest *q) { bend_initresult *r = (bend_initresult *) odr_malloc (q->stream, sizeof(*r)); - int *counter = (int *) xmalloc (sizeof(int)); + struct my_handle *my_p = (struct my_handle *) xmalloc (sizeof(*my_p)); - *counter = 0; + my_p->counter = 0; r->errcode = 0; r->errstring = 0; - r->handle = counter; /* user handle, in this case a simple int */ + r->handle = my_p; /* user handle */ q->bend_search = my_search; /* register search handler */ - q->bend_fetch = my_fetch; /* register fetch handle */ + q->bend_fetch = my_fetch; /* register fetch handle */ q->query_charset = "UTF-8"; q->records_in_same_charset = 1; @@ -96,6 +106,7 @@ int main(int argc, char **argv) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab