From 7eb2f0de616840d9a340519eac4c271820cd1248 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 5 Sep 1997 09:50:55 +0000 Subject: [PATCH] Removed global data1_tabpath - uses data1_get_tabpath() instead. --- Makefile | 4 ++-- include/data1.h | 49 +++++++++++++++++++++++++++++-------------------- retrieval/d1_absyn.c | 7 +++++-- retrieval/d1_attset.c | 7 +++++-- retrieval/d1_espec.c | 42 +++++++++++++++++++++++++++--------------- retrieval/d1_map.c | 7 +++++-- retrieval/d1_marc.c | 7 +++++-- retrieval/d1_read.c | 32 +++++--------------------------- retrieval/d1_tagset.c | 7 +++++-- retrieval/d1_varset.c | 7 +++++-- 10 files changed, 93 insertions(+), 76 deletions(-) diff --git a/Makefile b/Makefile index 09d3083..ae27375 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Copyright (C) 1995-1997, Index Data I/S # All rights reserved. # Sebastian Hammer, Adam Dickmeiss -# $Id: Makefile,v 1.33 1997-09-01 08:47:18 adam Exp $ +# $Id: Makefile,v 1.34 1997-09-05 09:50:55 adam Exp $ # Uncomment the lines below to enable mOSI communcation. #ODEFS=-DUSE_XTIMOSI @@ -122,4 +122,4 @@ install.misc: wc: wc `find . -name '*.[ch]'` - + diff --git a/include/data1.h b/include/data1.h index 7c8c961..8f94a32 100644 --- a/include/data1.h +++ b/include/data1.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995-1996, Index Data. + * Copyright (c) 1995-1997, Index Data. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation, in whole or in part, for any purpose, is hereby granted, @@ -24,7 +24,10 @@ * OF THIS SOFTWARE. * * $Log: data1.h,v $ - * Revision 1.24 1997-09-01 09:30:39 adam + * Revision 1.25 1997-09-05 09:50:55 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.24 1997/09/01 09:30:39 adam * Added include of yaz-util.h. * * Revision 1.23 1997/09/01 08:58:04 adam @@ -158,8 +161,6 @@ extern "C" { #define data1_matchstr(s1, s2) yaz_matchstr(s1, s2) -extern char *data1_tabpath; /* global path for tables */ - #define DATA1_MAX_SYMBOL 31 typedef struct data1_name @@ -324,8 +325,6 @@ typedef struct data1_node #define DATA1N_data 3 /* variant specification (a triple, actually) */ #define DATA1N_variant 4 - /* ISO2709 indicator */ -#define DATA1N_indicator 5 int which; union @@ -390,38 +389,48 @@ typedef struct data1_node } data1_node; YAZ_EXPORT data1_node *get_parent_tag(data1_node *n); -YAZ_EXPORT data1_node *data1_read_node(char **buf, data1_node *parent, int *line, - data1_absyn *absyn, NMEM m); +YAZ_EXPORT data1_node *data1_read_node(char **buf, data1_node *parent, + int *line, data1_absyn *absyn, NMEM m); YAZ_EXPORT data1_node *data1_read_record(int (*rf)(void *, char *, size_t), - void *fh, NMEM m); + void *fh, NMEM m); YAZ_EXPORT data1_absyn *data1_read_absyn(char *file); YAZ_EXPORT data1_tag *data1_gettagbynum(data1_tagset *s, int type, int value); YAZ_EXPORT data1_tagset *data1_read_tagset(char *file); YAZ_EXPORT data1_element *data1_getelementbytagname(data1_absyn *abs, - data1_element *parent, char *tagname); -YAZ_EXPORT Z_GenericRecord *data1_nodetogr(data1_node *n, int select, ODR o, int *len); + data1_element *parent, + char *tagname); +YAZ_EXPORT Z_GenericRecord *data1_nodetogr(data1_node *n, int select, ODR o, + int *len); YAZ_EXPORT data1_tag *data1_gettagbyname(data1_tagset *s, char *name); YAZ_EXPORT void data1_free_tree(data1_node *t); YAZ_EXPORT char *data1_nodetobuf(data1_node *n, int select, int *len); -YAZ_EXPORT data1_node *data1_insert_taggeddata(data1_node *root, data1_node *at, - char *tagname, NMEM m); +YAZ_EXPORT data1_node *data1_insert_taggeddata(data1_node *root, + data1_node *at, + char *tagname, NMEM m); YAZ_EXPORT data1_datatype data1_maptype(char *t); YAZ_EXPORT data1_varset *data1_read_varset(char *file); -YAZ_EXPORT data1_vartype *data1_getvartypebyct(data1_varset *set, char *zclass, char *type); +YAZ_EXPORT data1_vartype *data1_getvartypebyct(data1_varset *set, + char *zclass, char *type); YAZ_EXPORT Z_Espec1 *data1_read_espec1(char *file, ODR o); YAZ_EXPORT int data1_doespec1(data1_node *n, Z_Espec1 *e); YAZ_EXPORT data1_esetname *data1_getesetbyname(data1_absyn *a, char *name); -YAZ_EXPORT data1_element *data1_getelementbyname(data1_absyn *absyn, char *name); +YAZ_EXPORT data1_element *data1_getelementbyname(data1_absyn *absyn, + char *name); YAZ_EXPORT data1_node *data1_mk_node(NMEM m); YAZ_EXPORT data1_absyn *data1_get_absyn(char *name); YAZ_EXPORT data1_maptab *data1_read_maptab(char *file); -YAZ_EXPORT data1_node *data1_map_record(data1_node *n, data1_maptab *map, NMEM m); +YAZ_EXPORT data1_node *data1_map_record(data1_node *n, data1_maptab *map, + NMEM m); YAZ_EXPORT data1_marctab *data1_read_marctab(char *file); -YAZ_EXPORT char *data1_nodetomarc(data1_marctab *p, data1_node *n, int selected, int *len); +YAZ_EXPORT char *data1_nodetomarc(data1_marctab *p, data1_node *n, + int selected, int *len); YAZ_EXPORT char *data1_nodetoidsgml(data1_node *n, int select, int *len); -YAZ_EXPORT Z_ExplainRecord *data1_nodetoexplain(data1_node *n, int select, ODR o); -YAZ_EXPORT Z_BriefBib *data1_nodetosummary(data1_node *n, int select, ODR o); -YAZ_EXPORT char *data1_nodetosoif(data1_node *n, int select, int *len); +YAZ_EXPORT Z_ExplainRecord *data1_nodetoexplain(data1_node *n, int select, + ODR o); +YAZ_EXPORT Z_BriefBib *data1_nodetosummary(data1_node *n, int select, + ODR o); +YAZ_EXPORT char *data1_nodetosoif(data1_node *n, int select, + int *len); YAZ_EXPORT void data1_set_tabpath(const char *path); YAZ_EXPORT const char *data1_get_tabpath(void); diff --git a/retrieval/d1_absyn.c b/retrieval/d1_absyn.c index 3f2f3a0..7cf36d5 100644 --- a/retrieval/d1_absyn.c +++ b/retrieval/d1_absyn.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_absyn.c,v $ - * Revision 1.10 1997-05-14 06:54:01 adam + * Revision 1.11 1997-09-05 09:50:55 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.10 1997/05/14 06:54:01 adam * C++ support. * * Revision 1.9 1997/02/19 14:46:15 adam @@ -136,7 +139,7 @@ data1_absyn *data1_read_absyn(char *file) data1_termlist *all = 0; int level = 0; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; diff --git a/retrieval/d1_attset.c b/retrieval/d1_attset.c index 04401c5..b045f7e 100644 --- a/retrieval/d1_attset.c +++ b/retrieval/d1_attset.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_attset.c,v $ - * Revision 1.5 1996-05-09 07:27:43 quinn + * Revision 1.6 1997-09-05 09:50:56 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.5 1996/05/09 07:27:43 quinn * Multiple local attributes values supported. * * Revision 1.4 1996/02/21 15:23:36 quinn @@ -57,7 +60,7 @@ data1_attset *data1_read_attset(char *file) data1_att **attp; FILE *f; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; diff --git a/retrieval/d1_espec.c b/retrieval/d1_espec.c index 83fe26f..cb1f532 100644 --- a/retrieval/d1_espec.c +++ b/retrieval/d1_espec.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_espec.c,v $ - * Revision 1.7 1997-05-14 06:54:02 adam + * Revision 1.8 1997-09-05 09:50:56 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.7 1997/05/14 06:54:02 adam * C++ support. * * Revision 1.6 1996/07/06 19:58:34 quinn @@ -217,7 +220,7 @@ Z_Espec1 *data1_read_espec1(char *file, ODR o) char *argv[50], line[512]; Z_Espec1 *res = odr_malloc(o, sizeof(*res)); - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; @@ -243,7 +246,7 @@ Z_Espec1 *data1_read_espec1(char *file, ODR o) continue; } - res->elementSetNames = odr_malloc(o, sizeof(char*)*nnames); + res->elementSetNames = odr_malloc(o, sizeof(char**)*nnames); for (i = 0; i < nnames; i++) { res->elementSetNames[i] = odr_malloc(o, strlen(argv[i+1])+1); @@ -286,21 +289,29 @@ Z_Espec1 *data1_read_espec1(char *file, ODR o) char *path = argv[1]; char *ep; int num, i = 0; - + if (!res->elements) - res->elements = odr_malloc(o, size_esn = 24*sizeof(*er)); - else if (res->num_elements >= size_esn) + res->elements = odr_malloc(o, size_esn = 24*sizeof(er)); + else if (res->num_elements >= size_esn/sizeof(er)) { size_esn *= 2; - res->elements = o ? odr_malloc(o, size_esn) : - xrealloc(res->elements, size_esn); + if (o) + { + Z_ElementRequest **oe = res->elements; + + res->elements = odr_malloc (o, size_esn*sizeof(er)); + memcpy (res->elements, oe, size_esn/2); + } + else + res->elements = + xrealloc(res->elements, size_esn*sizeof(er)); } if (argc < 2) { logf(LOG_WARN, "%s: Empty simpleelement directive", file); continue; } - + res->elements[res->num_elements++] = er = odr_malloc(o, sizeof(*er)); er->which = Z_ERequest_simpleElement; @@ -311,19 +322,20 @@ Z_Espec1 *data1_read_espec1(char *file, ODR o) /* * Parse the element selector. */ - for (num = 1, ep = path; (ep = strchr(ep, '/')); num++, ep++); + for (num = 1, ep = path; (ep = strchr(ep, '/')); num++, ep++) + ; tp->tags = odr_malloc(o, sizeof(Z_ETagUnit*)*num); - - for ((ep = strchr(path, '/')) ; path ; (void)((path = ep) && - (ep = strchr(path, '/')))) + + for ((ep = strchr(path, '/')) ; path ; + (void)((path = ep) && (ep = strchr(path, '/')))) { if (ep) ep++; - + assert(itags[tp->num_tags++] = read_tagunit(path, o); } - + if (argc > 2 && !strcmp(argv[2], "variant")) se->variantRequest= read_variant(argc-3, argv+3, o); } diff --git a/retrieval/d1_map.c b/retrieval/d1_map.c index 0d99476..f01b837 100644 --- a/retrieval/d1_map.c +++ b/retrieval/d1_map.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_map.c,v $ - * Revision 1.9 1996-06-10 08:56:02 quinn + * Revision 1.10 1997-09-05 09:50:56 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.9 1996/06/10 08:56:02 quinn * Work on Summary. * * Revision 1.8 1996/05/01 12:45:31 quinn @@ -58,7 +61,7 @@ data1_maptab *data1_read_maptab(char *file) data1_mapunit **mapp; int local_numeric = 0; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; diff --git a/retrieval/d1_marc.c b/retrieval/d1_marc.c index 1b2795e..6c3d0a1 100644 --- a/retrieval/d1_marc.c +++ b/retrieval/d1_marc.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_marc.c,v $ - * Revision 1.6 1997-09-04 13:51:58 adam + * Revision 1.7 1997-09-05 09:50:57 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.6 1997/09/04 13:51:58 adam * Added data1 to marc conversion with indicators. * * Revision 1.5 1997/09/04 13:48:04 adam @@ -46,7 +49,7 @@ data1_marctab *data1_read_marctab(char *file) char line[512], *argv[50]; int argc; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c index 1740c21..d4a14bd 100644 --- a/retrieval/d1_read.c +++ b/retrieval/d1_read.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_read.c,v $ - * Revision 1.14 1997-05-14 06:54:04 adam + * Revision 1.15 1997-09-05 09:50:57 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.14 1997/05/14 06:54:04 adam * C++ support. * * Revision 1.13 1996/10/29 13:35:38 adam @@ -101,7 +104,7 @@ #include #include -char *data1_tabpath = 0; /* global path for tables */ +static char *data1_tabpath = 0; /* global path for tables */ void data1_set_tabpath(const char *p) { @@ -122,9 +125,6 @@ const char *data1_get_tabpath (void) return data1_tabpath; } -#if 0 -static data1_node *freelist = 0; -#endif /* * get the tag which is the immediate parent of this node (this may mean @@ -142,29 +142,13 @@ data1_node *data1_mk_node(NMEM m) { data1_node *r; -#if 0 - if ((r = freelist)) - freelist = r->next; - else - if (!(r = xmalloc(sizeof(*r)))) - abort(); -#else r = nmem_malloc(m, sizeof(*r)); -#endif r->next = r->child = r->last_child = r->parent = 0; r->num_children = 0; r->destroy = 0; return r; } -#if 0 -static void fr_node(data1_node *n) -{ - n->next = freelist; - freelist = n; -} -#endif - void data1_free_tree(data1_node *t) { data1_node *p = t->child, *pn; @@ -177,9 +161,6 @@ void data1_free_tree(data1_node *t) } if (t->destroy) (*t->destroy)(t); -#if 0 - fr_node(t); -#endif } /* @@ -413,9 +394,6 @@ data1_node *data1_read_node(char **buf, data1_node *parent, int *line, { int len = 0; char *data = *buf, *pp = *buf; -#if 0 - data1_node *partag = get_parent_tag(parent); -#endif if (!parent) /* abort if abstract syntax is undefined */ return 0; diff --git a/retrieval/d1_tagset.c b/retrieval/d1_tagset.c index 97fdad8..0fbec96 100644 --- a/retrieval/d1_tagset.c +++ b/retrieval/d1_tagset.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_tagset.c,v $ - * Revision 1.4 1995-11-13 09:27:38 quinn + * Revision 1.5 1997-09-05 09:50:57 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.4 1995/11/13 09:27:38 quinn * Fiddling with the variant stuff. * * Revision 1.3 1995/11/01 16:34:58 quinn @@ -110,7 +113,7 @@ data1_tagset *data1_read_tagset(char *file) data1_tag **tagp; FILE *f; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; diff --git a/retrieval/d1_varset.c b/retrieval/d1_varset.c index 1af6e70..e6ec042 100644 --- a/retrieval/d1_varset.c +++ b/retrieval/d1_varset.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: d1_varset.c,v $ - * Revision 1.4 1997-05-14 06:54:04 adam + * Revision 1.5 1997-09-05 09:50:58 adam + * Removed global data1_tabpath - uses data1_get_tabpath() instead. + * + * Revision 1.4 1997/05/14 06:54:04 adam * C++ support. * * Revision 1.3 1995/11/01 16:34:58 quinn @@ -60,7 +63,7 @@ data1_varset *data1_read_varset(char *file) res->reference = VAL_NONE; res->classes = 0; - if (!(f = yaz_path_fopen(data1_tabpath, file, "r"))) + if (!(f = yaz_path_fopen(data1_get_tabpath(), file, "r"))) { logf(LOG_WARN|LOG_ERRNO, "%s", file); return 0; -- 1.7.10.4