+/* $Id: apitest.c,v 1.12 2002-08-02 19:26:55 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+ Index Data Aps
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Zebra; see the file LICENSE.zebra. If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+*/
+
+
#include <stdio.h>
-#include <log.h>
-#include <pquery.h>
+#include <yaz/log.h>
+#include <yaz/pquery.h>
#include "zebraapi.h"
/* Small routine to display GRS-1 record variants ... */
various functions */
ODR odr_input, odr_output;
- /* zh is our Zebra Handle - describes the server as a whole */
+ /* zs is our Zebra Service - decribes whole server */
+ ZebraService zs;
+
+ /* zh is our Zebra Handle - describes database session */
ZebraHandle zh;
/* the database we specify in our example */
- char *base = "Default";
+ const char *base = "Default";
int argno;
nmem_init ();
+ yaz_log_init_file("apitest.log");
+
odr_input = odr_createmem (ODR_DECODE);
odr_output = odr_createmem (ODR_ENCODE);
- /* open Zebra */
- zh = zebra_open ("zebra.cfg");
+ zs = zebra_start ("zebra.cfg");
+ if (!zs)
+ {
+ printf ("zebra_start failed; missing zebra.cfg?\n");
+ exit (1);
+ }
+ /* open Zebra */
+ zh = zebra_open (zs);
if (!zh)
{
- printf ("Couldn't init zebra\n");
+ printf ("zebras_open failed\n");
exit (1);
}
-
- /* This call controls the logging facility in YAZ/Zebra */
-#if 0
- log_init(LOG_ALL, "", "out.log");
-#endif
-
+ zebra_select_databases (zh, 1, &base);
/* Each argument to main will be a query */
for (argno = 1; argno < argc; argno++)
{
char setname[64];
int errCode;
int i;
- const char *errString;
- char *errAdd;
+ int hits;
+ char *errString;
ZebraRetrievalRecord *records;
int noOfRecordsToFetch;
odr_reset (odr_input);
continue;
}
+ else
+ {
+ char out_str[100];
+ int r;
+#if 1
+ r = zebra_string_norm (zh, 'w',
+ argv[argno], strlen(argv[argno]),
+ out_str, sizeof(out_str));
+ if (r >= 0)
+ {
+ printf ("norm: '%s'\n", out_str);
+ }
+ else
+ {
+ printf ("norm fail: %d\n", r);
+ }
+#endif
+ }
/* result set name will be called 1,2, etc */
- sprintf (setname, "%d", i);
+ sprintf (setname, "%d", argno);
/* fire up the search */
- zebra_search_rpn (zh, odr_input, odr_output, query, 1, &base, setname);
+ zebra_search_rpn (zh, odr_input, odr_output, query, setname, &hits);
/* status ... */
- errCode = zebra_errCode (zh);
- errString = zebra_errString (zh);
- errAdd = zebra_errAdd (zh);
+ zebra_result (zh, &errCode, &errString);
/* error? */
if (errCode)
{
- printf ("Zebra Search Error %d %s %s\n",
- errCode, errString, errAdd ? errAdd : "");
+ printf ("Zebra Search Error %d %s\n",
+ errCode, errString);
continue;
}
/* ok ... */
- printf ("Zebra Search gave %d hits\n", zebra_hits (zh));
+ printf ("Zebra Search gave %d hits\n", hits);
/* Deterimine number of records to fetch ... */
- if (zebra_hits(zh) > 10)
+ if (hits > 10)
noOfRecordsToFetch = 10;
else
- noOfRecordsToFetch = zebra_hits(zh);
+ noOfRecordsToFetch = hits;
/* reset our memory - we've finished dealing with search */
odr_reset (odr_input);
noOfRecordsToFetch, records);
/* status ... */
- errCode = zebra_errCode (zh);
- errString = zebra_errString (zh);
- errAdd = zebra_errAdd (zh);
-
+
+ zebra_result (zh, &errCode, &errString);
+
/* error ? */
if (errCode)
{
- printf ("Zebra Search Error %d %s %s\n",
- errCode, errString, errAdd ? errAdd : "");
+ printf ("Zebra Search Error %d %s\n",
+ errCode, errString);
}
else
{
odr_destroy (odr_input);
odr_destroy (odr_output);
zebra_close (zh);
+ zebra_stop (zs);
return 0;
}