X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fzebramap.c;h=239d05d84d14682a179dc6878b7aa1c6b54b7c78;hb=a20e59c5087fb92c419f2330c786367f9ce8ccd2;hp=976f5b43e28629257ecf3cc88a9fd6087bd3ca76;hpb=89d059a3e4541ff00bbb4193ba34c1dbe1e21928;p=idzebra-moved-to-github.git diff --git a/util/zebramap.c b/util/zebramap.c index 976f5b4..239d05d 100644 --- a/util/zebramap.c +++ b/util/zebramap.c @@ -4,7 +4,16 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zebramap.c,v $ - * Revision 1.22 2001-11-14 22:06:27 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 * Rank-weight may be controlled via query. * * Revision 1.21 2001/01/22 10:42:56 adam @@ -118,6 +127,7 @@ struct zebra_map { struct zebra_maps { char *tabpath; + char *tabroot; NMEM nmem; struct zebra_map *map_list; char temp_map_str[2]; @@ -150,7 +160,7 @@ static void zebra_map_read (ZebraMaps zms, const char *name) 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 ; @@ -260,7 +270,7 @@ static void zebra_map_read (ZebraMaps zms, const char *name) } 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; @@ -273,7 +283,7 @@ static void zms_map_handle (void *p, const char *name, const char *value) 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; @@ -281,6 +291,9 @@ ZebraMaps zebra_maps_open (Res res) 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'; @@ -298,6 +311,7 @@ ZebraMaps zebra_maps_open (Res res) zms->wrbuf_1 = wrbuf_alloc(); zms->wrbuf_2 = wrbuf_alloc(); + return zms; } @@ -329,7 +343,8 @@ chrmaptab zebra_charmap_get (ZebraMaps zms, unsigned reg_id) 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 @@ -556,7 +571,7 @@ int zebra_maps_attr (ZebraMaps zms, Z_AttributesPlusTerm *zapt, if (relation_value == 102) { if (weight_value == -1) - weight_value == 34; + weight_value = 34; sprintf (rank_type, "rank,%d", weight_value); } if (*complete_flag)