Removed global data1_tabpath - uses data1_get_tabpath() instead.
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 5 Sep 1997 09:50:55 +0000 (09:50 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 5 Sep 1997 09:50:55 +0000 (09:50 +0000)
Makefile
include/data1.h
retrieval/d1_absyn.c
retrieval/d1_attset.c
retrieval/d1_espec.c
retrieval/d1_map.c
retrieval/d1_marc.c
retrieval/d1_read.c
retrieval/d1_tagset.c
retrieval/d1_varset.c

index 09d3083..ae27375 100644 (file)
--- 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]'`
-       
+
index 7c8c961..8f94a32 100644 (file)
@@ -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,
  * 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);
 
index 3f2f3a0..7cf36d5 100644 (file)
@@ -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;
index 04401c5..b045f7e 100644 (file)
@@ -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;
index 83fe26f..cb1f532 100644 (file)
@@ -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(i<num);
                tp->tags[tp->num_tags++] = read_tagunit(path, o);
            }
-
+           
            if (argc > 2 && !strcmp(argv[2], "variant"))
                se->variantRequest= read_variant(argc-3, argv+3, o);
        }
index 0d99476..f01b837 100644 (file)
@@ -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;
index 1b2795e..6c3d0a1 100644 (file)
@@ -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;
index 1740c21..d4a14bd 100644 (file)
@@ -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
 #include <log.h>
 #include <data1.h>
 
-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;
index 97fdad8..0fbec96 100644 (file)
@@ -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;
index 1af6e70..e6ec042 100644 (file)
@@ -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;