* Sebastian Hammer, Adam Dickmeiss
*
* $Log: zebramap.c,v $
- * Revision 1.23 2001-11-15 08:41:24 adam
+ * Revision 1.25 2002-04-05 12:54:29 adam
+ * Using yaz_fclose
+ *
+ * Revision 1.24 2002/04/04 20:50:37 adam
+ * Multi register works with record paths and data1 profile path
+ *
+ * Revision 1.23 2001/11/15 08:41:24 adam
* Fix for weight (bug introduced by previous commit).
*
* Revision 1.22 2001/11/14 22:06:27 adam
struct zebra_maps {
char *tabpath;
+ char *tabroot;
NMEM nmem;
struct zebra_map *map_list;
char temp_map_str[2];
int lineno = 0;
struct zebra_map **zm = 0, *zp;
- if (!(f = yaz_path_fopen(zms->tabpath, name, "r")))
+ if (!(f = yaz_fopen(zms->tabpath, name, "r", zms->tabroot)))
{
logf(LOG_WARN|LOG_ERRNO, "%s", name);
return ;
}
if (zm)
(*zm)->next = NULL;
- fclose (f);
+ yaz_fclose (f);
for (zp = zms->map_list; zp; zp = zp->next)
zms->lookup_array[zp->reg_id] = zp;
zebra_map_read (zms, value);
}
-ZebraMaps zebra_maps_open (Res res)
+ZebraMaps zebra_maps_open (Res res, const char *base)
{
ZebraMaps zms = (ZebraMaps) xmalloc (sizeof(*zms));
int i;
zms->nmem = nmem_create ();
zms->tabpath = nmem_strdup (zms->nmem,
res_get_def (res, "profilePath", "."));
+ zms->tabroot = 0;
+ if (base)
+ zms->tabroot = nmem_strdup (zms->nmem, base);
zms->map_list = NULL;
zms->temp_map_str[0] = '\0';
zms->wrbuf_1 = wrbuf_alloc();
zms->wrbuf_2 = wrbuf_alloc();
+
return zms;
}
if (!zm->maptab_name || !yaz_matchstr (zm->maptab_name, "@"))
return NULL;
if (!(zm->maptab = chrmaptab_create (zms->tabpath,
- zm->maptab_name, 0)))
+ zm->maptab_name, 0,
+ zms->tabroot)))
logf(LOG_WARN, "Failed to read character table %s",
zm->maptab_name);
else