193 int r, filter_ptr = 0;
195 static char *filter_buf = NULL;
196 static int filter_size = 0;
199 const char *elementSetName = NULL;
202 if (
p->comp &&
p->comp->which == Z_RecordComp_simple &&
203 p->comp->u.simple->which == Z_ElementSetNames_generic)
204 elementSetName =
p->comp->u.simple->u.generic;
209 if (!strcmp(elementSetName,
"R"))
215 else if (!strcmp(elementSetName,
"H"))
223 if (filter_ptr + 4096 >= filter_size)
227 filter_size = 2*filter_size + 8192;
228 nb = (
char *) xmalloc(filter_size);
231 memcpy(nb, filter_buf, filter_ptr);
236 if (make_header && filter_ptr == 0)
240 yaz_snprintf(filter_buf, 50,
"Rank: %d\n",
p->score);
241 filter_ptr = strlen(filter_buf);
243 yaz_snprintf(filter_buf + filter_ptr, 50,
"Local Number: " ZINT_FORMAT "\n",
245 filter_ptr = strlen(filter_buf);
248 yaz_snprintf(filter_buf + filter_ptr, 200,
"Filename: %s\n",
p->fname);
249 filter_ptr = strlen(filter_buf);
251 strcpy(filter_buf+filter_ptr++,
"\n");
260 filter_buf[filter_ptr] =
'\0';
263 if (!strcmp(elementSetName,
"B"))
265 if (!strcmp(elementSetName,
"M"))
270 char *
p = filter_buf;
273 while (++i <= no_lines && (
p = strchr (
p,
'\n')))
278 filter_ptr =
p-filter_buf;
281 p->output_format = yaz_oid_recsyn_sutrs;
282 p->rec_buf = filter_buf;
283 p->rec_len = filter_ptr;