{
/* odr is a handle to memory assocated with RETURNED data from
various functions */
- ODR odr = odr_createmem (ODR_ENCODE);
+ ODR odr_input, odr_output;
/* zh is our Zebra Handle - describes the server as a whole */
ZebraHandle zh;
char *base = "Default";
int argno;
- /* open Zebra */
+ nmem_init ();
+
+ log_init_file("apitest.log");
+
+ odr_input = odr_createmem (ODR_DECODE);
+ odr_output = odr_createmem (ODR_ENCODE);
+
+ /* open Zebra */
zh = zebra_open ("zebra.cfg");
if (!zh)
{
for (argno = 1; argno < argc; argno++)
{
/* parse the query and generate an RPN structure */
- Z_RPNQuery *query = p_query_rpn (odr, PROTO_Z3950, argv[argno]);
+ Z_RPNQuery *query = p_query_rpn (odr_input, PROTO_Z3950, argv[argno]);
char setname[64];
int errCode;
int i;
if (!query)
{
logf (LOG_WARN, "bad query %s\n", argv[argno]);
- odr_reset (odr);
+ odr_reset (odr_input);
continue;
}
/* 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, query, 1, &base, setname);
+ zebra_search_rpn (zh, odr_input, odr_output, query, 1, &base, setname);
/* status ... */
errCode = zebra_errCode (zh);
noOfRecordsToFetch = zebra_hits(zh);
/* reset our memory - we've finished dealing with search */
- odr_reset (odr);
+ odr_reset (odr_input);
+ odr_reset (odr_output);
/* prepare to fetch ... */
- records = malloc (sizeof(*records) * noOfRecordsToFetch);
+ records = odr_malloc (odr_input, sizeof(*records) * noOfRecordsToFetch);
/* specify position of each record to fetch */
/* first one is numbered 1 and NOT 0 */
for (i = 0; i<noOfRecordsToFetch; i++)
records[i].position = i+1;
/* fetch them and request for GRS-1 records */
- zebra_records_retrieve (zh, odr, setname, NULL, VAL_GRS1,
+ zebra_records_retrieve (zh, odr_input, setname, NULL, VAL_SUTRS,
noOfRecordsToFetch, records);
/* status ... */
printf (" GRS-1\n");
display_grs1(grs_record, 0);
}
+ else if (records[i].format == VAL_SUTRS)
+ {
+ printf (" SUTRS\n");
+ printf ("%.*s", records[i].len, records[i].buf);
+ }
/* some other record we don't handle yet... */
else
{
}
}
}
- free (records);
- odr_reset (odr); /* reset memory */
+ /* reset our memory - we've finished dealing with present */
+ odr_reset (odr_input);
+ odr_reset (odr_output);
}
+ odr_destroy (odr_input);
+ odr_destroy (odr_output);
+ zebra_close (zh);
return 0;
}