/* This file is part of the YAZ toolkit. * Copyright (C) Index Data * See the file LICENSE for details. */ #include #include #include #include static void display_records (const char *tname, ZOOM_resultset r) { /* OK, no major errors. Look at the result count */ int pos; printf ("%s: %ld hits\n", tname, (long) ZOOM_resultset_size(r)); /* go through all records at target */ for (pos = 0; pos < 4; pos++) { ZOOM_record rec = ZOOM_resultset_record (r, pos); if (rec) { /* get database for record and record itself at pos */ const char *db = ZOOM_record_get (rec, "database", 0); int len; const char *render = ZOOM_record_get (rec, "render", &len); /* if rec is non-null, we got a record for display */ if (rec) { printf ("%d %s\n", pos+1, (db ? db : "unknown")); if (render) { if (fwrite (render, 1, len, stdout) != (size_t) len) printf("write to stdout failed\n"); } printf ("\n"); } } } } int main(int argc, char **argv) { int i; int no = argc-3; ZOOM_connection z[500]; /* allow at most 500 connections */ ZOOM_resultset r1[500]; /* and result sets .. */ ZOOM_resultset r2[500]; /* and result sets .. */ ZOOM_query q; ZOOM_options o; o = ZOOM_options_create (); if (argc < 4) { fprintf (stderr, "usage:\n%s target1 .. targetN query1 query2\n", *argv); exit (1); } if (no > 500) no = 500; ZOOM_options_set (o, "async", "1"); /* get 3 (at most) records from beginning */ ZOOM_options_set (o, "count", "3"); ZOOM_options_set (o, "preferredRecordSyntax", "sutrs"); ZOOM_options_set (o, "elementSetName", "B"); /* create query */ q = ZOOM_query_create (); if (ZOOM_query_prefix (q, argv[argc-2])) { printf ("bad PQF: %s\n", argv[argc-2]); exit (2); } /* connect - and search all */ for (i = 0; i