if (!(zh->records = rec_open (zh->bfs, 0, 0)))
{
logf (LOG_WARN, "rec_open");
if (!(zh->records = rec_open (zh->bfs, 0, 0)))
{
logf (LOG_WARN, "rec_open");
}
else
{
if (!(zh->dict = dict_open (zh->bfs, FNAME_DICT, 40, 0, 0)))
{
logf (LOG_WARN, "dict_open");
}
else
{
if (!(zh->dict = dict_open (zh->bfs, FNAME_DICT, 40, 0, 0)))
{
logf (LOG_WARN, "dict_open");
}
if (!(zh->sortIdx = sortIdx_open (zh->bfs, 0)))
{
logf (LOG_WARN, "sortIdx_open");
}
if (!(zh->sortIdx = sortIdx_open (zh->bfs, 0)))
{
logf (LOG_WARN, "sortIdx_open");
}
if (res_get_match (zh->res, "isam", "s", ISAM_DEFAULT))
{
}
if (res_get_match (zh->res, "isam", "s", ISAM_DEFAULT))
{
key_isams_m(zh->res, &isams_m))))
{
logf (LOG_WARN, "isams_open");
key_isams_m(zh->res, &isams_m))))
{
logf (LOG_WARN, "isams_open");
sizeof (struct it_key), zh->res)))
{
logf (LOG_WARN, "is_open");
sizeof (struct it_key), zh->res)))
{
logf (LOG_WARN, "is_open");
}
}
else if (res_get_match (zh->res, "isam", "c", ISAM_DEFAULT))
}
}
else if (res_get_match (zh->res, "isam", "c", ISAM_DEFAULT))
0, key_isamc_m(zh->res, &isamc_m))))
{
logf (LOG_WARN, "isc_open");
0, key_isamc_m(zh->res, &isamc_m))))
{
logf (LOG_WARN, "isc_open");
- zh->zei = zebraExplain_open (zh->records, zh->dh, zh->res, 0, 0, 0);
+ zh->zei = zebraExplain_open (zh->records, zh->dh,
+ zh->res, 0, 0, 0);
+
+ zh->service = service;
+ zh->sets = 0;
+
+ return zh;
+}
+
+ZebraService zebra_start (const char *configName)
+{
+ ZebraService zh = xmalloc (sizeof(*zh));
+ zh->configName = xstrdup(configName);
+ zh->sessions = 0;
+ yaz_log (LOG_LOG, "zebra_start %s", configName);
if (!(zh->res = res_open (configName)))
{
logf (LOG_WARN, "Failed to read resources `%s'", configName);
if (!(zh->res = res_open (configName)))
{
logf (LOG_WARN, "Failed to read resources `%s'", configName);
}
bf_lockDir (zh->bfs, res_get (zh->res, "lockDir"));
data1_set_tabpath (zh->dh, res_get(zh->res, "profilePath"));
}
bf_lockDir (zh->bfs, res_get (zh->res, "lockDir"));
data1_set_tabpath (zh->dh, res_get(zh->res, "profilePath"));
zebraExplain_close (zh->zei, 0, 0);
dict_close (zh->dict);
sortIdx_close (zh->sortIdx);
zebraExplain_close (zh->zei, 0, 0);
dict_close (zh->dict);
sortIdx_close (zh->sortIdx);
- res_trav (zh->res, "mapdb", &info, map_basenames_func);
+ res_trav (zh->service->res, "mapdb", &info, map_basenames_func);
return;
map_basenames (zh, stream, &num_bases, &basenames);
resultSetAddRPN (zh, stream, decode, query, num_bases, basenames, setname);
return;
map_basenames (zh, stream, &num_bases, &basenames);
resultSetAddRPN (zh, stream, decode, query, num_bases, basenames, setname);
int *position, int *num_entries, ZebraScanEntry **entries,
int *is_partial)
{
int *position, int *num_entries, ZebraScanEntry **entries,
int *is_partial)
{
rpn_scan (zh, stream, zapt, attributeset,
num_bases, basenames, position,
num_entries, entries, is_partial);
rpn_scan (zh, stream, zapt, attributeset,
num_bases, basenames, position,
num_entries, entries, is_partial);
return;
resultSetSort (zh, stream->mem, num_input_setnames, input_setnames,
output_setname, sort_sequence, sort_status);
return;
resultSetSort (zh, stream->mem, num_input_setnames, input_setnames,
output_setname, sort_sequence, sort_status);
resultSetDestroy (zh, -1, 0, statuses);
break;
}
resultSetDestroy (zh, -1, 0, statuses);
break;
}
status = Z_DeleteStatus_success;
for (i = 0; i<num_setnames; i++)
if (statuses[i] == Z_DeleteStatus_resultSetDidNotExist)
status = Z_DeleteStatus_success;
for (i = 0; i<num_setnames; i++)
if (statuses[i] == Z_DeleteStatus_resultSetDidNotExist)
- wrbuf = zebra_replace(zh->zebra_maps, reg_id, "",
+ wrbuf = zebra_replace(zh->service->zebra_maps, reg_id, "",