data1 moved to zebra
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 22 Oct 2002 12:51:18 +0000 (12:51 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 22 Oct 2002 12:51:18 +0000 (12:51 +0000)
62 files changed:
CHANGELOG
Makefile.am
configure.in
include/yaz/Makefile.am
include/yaz/d1_attset.h [deleted file]
include/yaz/d1_map.h [deleted file]
include/yaz/data1.h [deleted file]
lib/Makefile.am
retrieval/Makefile.am [deleted file]
retrieval/d1_absyn.c [deleted file]
retrieval/d1_attset.c [deleted file]
retrieval/d1_doespec.c [deleted file]
retrieval/d1_espec.c [deleted file]
retrieval/d1_expout.c [deleted file]
retrieval/d1_grs.c [deleted file]
retrieval/d1_handle.c [deleted file]
retrieval/d1_if.c [deleted file]
retrieval/d1_map.c [deleted file]
retrieval/d1_marc.c [deleted file]
retrieval/d1_prtree.c [deleted file]
retrieval/d1_read.c [deleted file]
retrieval/d1_soif.c [deleted file]
retrieval/d1_sumout.c [deleted file]
retrieval/d1_sutrs.c [deleted file]
retrieval/d1_tagset.c [deleted file]
retrieval/d1_varset.c [deleted file]
retrieval/d1_write.c [deleted file]
tab/Makefile.am [deleted file]
tab/bib1.att [deleted file]
tab/dan1.att [deleted file]
tab/danmarc.abs [deleted file]
tab/danmarc.mar [deleted file]
tab/explain.abs [deleted file]
tab/explain.att [deleted file]
tab/explain.tag [deleted file]
tab/generic.tag [deleted file]
tab/gils-a.est [deleted file]
tab/gils-b.est [deleted file]
tab/gils-f.est [deleted file]
tab/gils-g.est [deleted file]
tab/gils-summary.map [deleted file]
tab/gils-usmarc.map [deleted file]
tab/gils-variant.est [deleted file]
tab/gils.abs [deleted file]
tab/gils.att [deleted file]
tab/gils.tag [deleted file]
tab/meta-b.est [deleted file]
tab/meta-usmarc.map [deleted file]
tab/meta.abs [deleted file]
tab/meta.tag [deleted file]
tab/summary.abs [deleted file]
tab/summary.tag [deleted file]
tab/tagsetg.tag [deleted file]
tab/tagsetm.tag [deleted file]
tab/usmarc-b.est [deleted file]
tab/usmarc.abs [deleted file]
tab/usmarc.mar [deleted file]
tab/usmarc.tag [deleted file]
tab/var1.var [deleted file]
tab/wais-b.est [deleted file]
tab/wais-variant.est [deleted file]
tab/wais.abs [deleted file]

index a34e073..d509bce 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
 Possible compatibility problems with earlier versions marked with '*'.
 
 Possible compatibility problems with earlier versions marked with '*'.
 
+Move retrieval (data1) module to Zebra since nobody seems
+to be using it.
+
 Add GRS-1 render for ZOOM using same format as yaz-client.
 
 --- 1.9.1 2002/10/05
 Add GRS-1 render for ZOOM using same format as yaz-client.
 
 --- 1.9.1 2002/10/05
index e837609..260c395 100644 (file)
@@ -1,8 +1,8 @@
-## $Id: Makefile.am,v 1.16 2002-09-25 07:43:29 adam Exp $
+## $Id: Makefile.am,v 1.17 2002-10-22 12:51:18 adam Exp $
 
 AUTOMAKE_OPTIONS = foreign 
 
 
 AUTOMAKE_OPTIONS = foreign 
 
-SUBDIRS = util odr comstack z39.50 ill zutil ccl tab retrieval server include lib client ztest zoom doc
+SUBDIRS = util odr comstack z39.50 ill zutil ccl server include lib client ztest zoom doc
 
 aclocaldir=$(datadir)/aclocal
 
 
 aclocaldir=$(datadir)/aclocal
 
index b50c583..efa2af5 100644 (file)
@@ -1,6 +1,6 @@
 dnl YAZ Toolkit, Index Data 1994-2002
 dnl See the file LICENSE for details.
 dnl YAZ Toolkit, Index Data 1994-2002
 dnl See the file LICENSE for details.
-dnl $Id: configure.in,v 1.93 2002-09-25 08:11:33 adam Exp $
+dnl $Id: configure.in,v 1.94 2002-10-22 12:51:18 adam Exp $
 AC_INIT(include/yaz/yaz-version.h)
 AM_INIT_AUTOMAKE(yaz, 1.9.1)
 dnl
 AC_INIT(include/yaz/yaz-version.h)
 AM_INIT_AUTOMAKE(yaz, 1.9.1)
 dnl
@@ -337,8 +337,6 @@ ill/Makefile
 zutil/Makefile
 comstack/Makefile
 ccl/Makefile
 zutil/Makefile
 comstack/Makefile
 ccl/Makefile
-tab/Makefile
-retrieval/Makefile
 server/Makefile
 include/Makefile
 include/yaz/Makefile
 server/Makefile
 include/Makefile
 include/yaz/Makefile
index c9ffa49..22a540e 100644 (file)
@@ -1,9 +1,9 @@
-## $Id: Makefile.am,v 1.16 2002-06-04 11:36:11 adam Exp $
+## $Id: Makefile.am,v 1.17 2002-10-22 12:51:18 adam Exp $
 
 pkginclude_HEADERS= backend.h ccl.h comstack.h \
 
 pkginclude_HEADERS= backend.h ccl.h comstack.h \
- d1_attset.h d1_map.h data1.h diagbib1.h sortspec.h \
- log.h logrpn.h marcdisp.h nmem.h odr.h oid.h options.h otherinfo.h \
- pquery.h prt-ext.h readconf.h statserv.h tcpip.h unix.h tpath.h wrbuf.h xmalloc.h \
+ diagbib1.h sortspec.h log.h logrpn.h marcdisp.h nmem.h odr.h oid.h \
+ options.h otherinfo.h pquery.h prt-ext.h readconf.h statserv.h \
+ tcpip.h unix.h tpath.h wrbuf.h xmalloc.h \
  yaz-ccl.h yaz-util.h yaz-version.h yconfig.h proto.h \
  \
  ill.h ill-core.h item-req.h z-accdes1.h z-accform1.h \
  yaz-ccl.h yaz-util.h yaz-version.h yconfig.h proto.h \
  \
  ill.h ill-core.h item-req.h z-accdes1.h z-accform1.h \
diff --git a/include/yaz/d1_attset.h b/include/yaz/d1_attset.h
deleted file mode 100644 (file)
index dfafdd9..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 1995-2000, 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,
- * provided that:
- *
- * 1. This copyright and permission notice appear in all copies of the
- * software and its documentation. Notices of copyright or attribution
- * which appear at the beginning of any file must remain unchanged.
- *
- * 2. The names of Index Data or the individual authors may not be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
- * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- */
-
-#ifndef D1_ATTSET_H
-#define D1_ATTSET_H
-
-#include <yaz/oid.h>
-
-YAZ_BEGIN_CDECL
-
-/*
- * This structure describes a attset, perhaps made up by inclusion
- * (supersetting) of other attribute sets. When indexing and searching,
- * we perform a normalisation, where we associate a given tag with
- * the set that originally defined it, rather than the superset. This
- * allows the most flexible access. Eg, the tags common to GILS and BIB-1
- * should be searchable by both names.
- */
-
-struct data1_attset;
-
-typedef struct data1_local_attribute
-{
-    int local;
-    struct data1_local_attribute *next;
-} data1_local_attribute;
-
-typedef struct data1_attset data1_attset;    
-typedef struct data1_att data1_att;
-typedef struct data1_attset_child data1_attset_child;
-
-struct data1_att
-{
-    data1_attset *parent;          /* attribute set */
-    char *name;                    /* symbolic name of this attribute */
-    int value;                     /* attribute value */
-    data1_local_attribute *locals; /* local index values */
-    data1_att *next;
-};
-
-struct data1_attset_child {
-    data1_attset *child;
-    data1_attset_child *next;
-};
-
-struct data1_attset
-{
-    char *name;          /* symbolic name */
-    oid_value reference;   /* external ID of attset */
-    data1_att *atts;          /* attributes */
-    data1_attset_child *children;  /* included attset */
-    data1_attset *next;       /* next in cache */
-};
-
-typedef struct data1_handle_info *data1_handle;
-
-YAZ_EXPORT data1_att *data1_getattbyname(data1_handle dh, data1_attset *s,
-                                        char *name);
-YAZ_EXPORT data1_attset *data1_read_attset(data1_handle dh, const char *file);
-
-YAZ_EXPORT data1_attset *data1_empty_attset(data1_handle dh);
-
-YAZ_END_CDECL
-
-#endif
diff --git a/include/yaz/d1_map.h b/include/yaz/d1_map.h
deleted file mode 100644 (file)
index bfd3567..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1995-2000, 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,
- * provided that:
- *
- * 1. This copyright and permission notice appear in all copies of the
- * software and its documentation. Notices of copyright or attribution
- * which appear at the beginning of any file must remain unchanged.
- *
- * 2. The names of Index Data or the individual authors may not be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
- * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- */
-
-#ifndef D1_MAP_H
-#define D1_MAP_H
-
-YAZ_BEGIN_CDECL
-
-typedef struct data1_maptag
-{
-    int new_field;
-    int type;
-#define D1_MAPTAG_numeric 1
-#define D1_MAPTAG_string 2
-    int which;
-    union
-    {
-       int numeric;
-       char *string;
-    } value;
-    struct data1_maptag *next;
-} data1_maptag;
-
-typedef struct data1_mapunit
-{
-    int no_data;
-    char *source_element_name;
-    data1_maptag *target_path;
-    struct data1_mapunit *next;
-} data1_mapunit;
-
-typedef struct data1_maptab
-{
-    char *name;
-    oid_value target_absyn_ref;
-    char *target_absyn_name;
-    data1_mapunit *map;
-    struct data1_maptab *next;
-} data1_maptab;
-
-YAZ_END_CDECL
-
-#endif
diff --git a/include/yaz/data1.h b/include/yaz/data1.h
deleted file mode 100644 (file)
index 0db650f..0000000
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Copyright (c) 1995-2002, 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,
- * provided that:
- *
- * 1. This copyright and permission notice appear in all copies of the
- * software and its documentation. Notices of copyright or attribution
- * which appear at the beginning of any file must remain unchanged.
- *
- * 2. The names of Index Data or the individual authors may not be used to
- * endorse or promote products derived from this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
- * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- *
- * $Id: data1.h,v 1.18 2002-10-08 20:14:44 adam Exp $
- */
-
-#ifndef DATA1_H
-#define DATA1_H
-
-#include <stdio.h>
-
-#include <yaz/nmem.h>
-#include <yaz/oid.h>
-#include <yaz/proto.h>
-
-#include <yaz/d1_attset.h>
-#include <yaz/d1_map.h>
-#include <yaz/yaz-util.h>
-#include <yaz/wrbuf.h>
-
-#define d1_isspace(c) strchr(" \r\n\t\f", c)
-#define d1_isdigit(c) ((c) <= '9' && (c) >= '0')
-
-YAZ_BEGIN_CDECL
-
-#define data1_matchstr(s1, s2) yaz_matchstr(s1, s2)
-
-#define DATA1_MAX_SYMBOL 31
-
-typedef struct data1_name
-{
-    char *name;
-    struct data1_name *next;
-} data1_name;
-
-typedef struct data1_absyn_cache_info *data1_absyn_cache;
-typedef struct data1_attset_cache_info *data1_attset_cache;
-
-typedef enum data1_datatype
-{
-    DATA1K_unknown,
-    DATA1K_structured,
-    DATA1K_string,
-    DATA1K_numeric,
-    DATA1K_bool,
-    DATA1K_oid,
-    DATA1K_generalizedtime,
-    DATA1K_intunit,
-    DATA1K_int,
-    DATA1K_octetstring,
-    DATA1K_null
-} data1_datatype;
-
-typedef struct data1_marctab
-{
-    char *name;
-    oid_value reference;
-
-    char record_status[2];
-    char implementation_codes[5];
-    int  indicator_length;
-    int  identifier_length;
-    char user_systems[4];
-
-    int  length_data_entry;
-    int  length_starting;
-    int  length_implementation;
-    char future_use[2];
-
-    int  force_indicator_length;
-    int  force_identifier_length;
-    struct data1_marctab *next;
-} data1_marctab;
-
-typedef struct data1_esetname
-{
-    char *name;
-    Z_Espec1 *spec;
-    struct data1_esetname *next;
-} data1_esetname;
-
-/*
- * Variant set definitions.
- */
-
-typedef struct data1_vartype
-{
-    char *name;
-    struct data1_varclass *zclass;
-    int type;
-    data1_datatype datatype;
-    struct data1_vartype *next;
-} data1_vartype;
-
-typedef struct data1_varclass
-{
-    char *name;
-    struct data1_varset *set;
-    int zclass;
-    data1_vartype *types;
-    struct data1_varclass *next;
-} data1_varclass;
-
-typedef struct data1_varset
-{
-    char *name;
-    oid_value reference;
-    data1_varclass *classes;
-} data1_varset;
-
-/*
- * Tagset definitions
- */
-
-struct data1_tagset;
-
-typedef struct data1_tag
-{
-    data1_name *names;
-#define DATA1T_numeric 1
-#define DATA1T_string 2
-    int which;
-    union
-    {
-       int numeric;
-       char *string;
-    } value;
-    data1_datatype kind;
-
-    struct data1_tagset *tagset;
-    struct data1_tag *next;
-} data1_tag;
-
-typedef struct data1_tagset data1_tagset;
-
-struct data1_tagset
-{
-    int type;                        /* type of tagset in current context */
-    char *name;                      /* symbolic name */
-    oid_value reference;
-    data1_tag *tags;                 /* tags defined by this set */
-    data1_tagset *children;          /* children */
-    data1_tagset *next;              /* sibling */
-};
-
-typedef struct data1_termlist
-{
-    data1_att *att;
-    char *structure;
-    char *source;
-    struct data1_termlist *next;
-} data1_termlist;
-
-/*
- * abstract syntax specification
- */
-
-typedef struct data1_element
-{
-    char *name;
-    data1_tag *tag;
-    data1_termlist *termlists;
-    char *sub_name;
-    struct data1_element *children;
-    struct data1_element *next;
-} data1_element;
-
-typedef struct data1_sub_elements {
-    char *name;
-    struct data1_sub_elements *next;
-    data1_element *elements;
-} data1_sub_elements;
-
-typedef struct data1_xattr {
-    char *name;
-    char *value;
-    struct data1_xattr *next;
-    unsigned short what;  /* DATA1I_text, .. see data1_node.u.data */
-} data1_xattr;
-
-typedef struct data1_absyn
-{
-    char *name;
-    oid_value reference;
-    data1_tagset *tagset;
-    data1_attset *attset;
-    data1_varset *varset;
-    data1_esetname *esetnames;
-    data1_maptab *maptabs;
-    data1_marctab *marc;
-    data1_sub_elements *sub_elements;
-    data1_element *main_elements;
-    char *encoding;
-    int  enable_xpath_indexing;
-} data1_absyn;
-
-/*
- * record data node (tag/data/variant)
- */
-
-typedef struct data1_node
-{
-    /* the root of a record (containing global data) */
-#define DATA1N_root 1 
-    /* a tag */
-#define DATA1N_tag  2       
-    /* some data under a leaf tag or variant */
-#define DATA1N_data 3
-    /* variant specification (a triple, actually) */
-#define DATA1N_variant 4
-    /* comment (same as data) */
-#define DATA1N_comment 5
-    /* preprocessing instruction */
-#define DATA1N_preprocess 6
-    int which;
-    union
-    {
-       struct
-       {
-           char *type;
-           data1_absyn *absyn;  /* abstract syntax for this type */
-       } root;
-
-       struct 
-       {
-           char *tag;
-           data1_element *element;
-           int no_data_requested;
-           int get_bytes;
-           unsigned node_selected : 1;
-           unsigned make_variantlist : 1;
-            data1_xattr *attributes;
-       } tag;
-
-       struct
-       {
-           char *data;      /* filename or data */
-           int len;
-            /* text inclusion */
-#define DATA1I_inctxt 1
-            /* binary data inclusion */
-#define DATA1I_incbin 2
-        /* text data */
-#define DATA1I_text 3 
-            /* numerical data */
-#define DATA1I_num 4
-            /* object identifier */
-#define DATA1I_oid 5
-            /* XML text */
-#define DATA1I_xmltext 6
-            unsigned what:7;
-           unsigned formatted_text : 1;   /* newlines are significant */
-       } data;
-
-       struct
-       {
-           data1_vartype *type;
-           char *value;
-       } variant;
-
-        struct
-        {
-            char *target;
-            data1_xattr *attributes;
-        } preprocess;
-    } u;
-
-    void (*destroy)(struct data1_node *n);
-#define DATA1_LOCALDATA 12
-    char lbuf[DATA1_LOCALDATA]; /* small buffer for local data */
-    struct data1_node *next;
-    struct data1_node *child;
-    struct data1_node *last_child;
-    struct data1_node *parent;
-    struct data1_node *root;
-} data1_node;
-
-YAZ_EXPORT data1_handle data1_create (void);
-
-#define DATA1_FLAG_XML  1
-YAZ_EXPORT data1_handle data1_createx (int flags);
-
-YAZ_EXPORT void data1_destroy(data1_handle dh);
-YAZ_EXPORT data1_node *get_parent_tag(data1_handle dh, data1_node *n);
-YAZ_EXPORT data1_node *data1_read_node(data1_handle dh, const char **buf,
-                                      NMEM m);
-YAZ_EXPORT data1_node *data1_read_nodex (data1_handle dh, NMEM m,
-                                        int (*get_byte)(void *fh), void *fh,
-                                        WRBUF wrbuf);
-YAZ_EXPORT data1_node *data1_read_record(data1_handle dh, 
-                                        int (*rf)(void *, char *, size_t),
-                                        void *fh, NMEM m);
-YAZ_EXPORT data1_absyn *data1_read_absyn(data1_handle dh, const char *file,
-                                         int file_must_exist);
-YAZ_EXPORT data1_tag *data1_gettagbynum(data1_handle dh,
-                                       data1_tagset *s,
-                                       int type, int value);
-YAZ_EXPORT data1_tagset *data1_empty_tagset (data1_handle dh);
-YAZ_EXPORT data1_tagset *data1_read_tagset(data1_handle dh, 
-                                          const char *file,
-                                          int type);
-YAZ_EXPORT data1_element *data1_getelementbytagname(data1_handle dh, 
-                                                   data1_absyn *abs,
-                                                   data1_element *parent,
-                                                   const char *tagname);
-YAZ_EXPORT Z_GenericRecord *data1_nodetogr(data1_handle dh, data1_node *n,
-                                          int select, ODR o,
-                                          int *len);
-YAZ_EXPORT data1_tag *data1_gettagbyname(data1_handle dh, data1_tagset *s,
-                                        const char *name);
-YAZ_EXPORT void data1_free_tree(data1_handle dh, data1_node *t);
-YAZ_EXPORT char *data1_nodetobuf(data1_handle dh, data1_node *n,
-                                int select, int *len);
-YAZ_EXPORT data1_node *data1_mk_tag_data_wd(data1_handle dh,
-                                            data1_node *at,
-                                            const char *tagname, NMEM m);
-YAZ_EXPORT data1_node *data1_mk_tag_data(data1_handle dh, data1_node *at,
-                                         const char *tagname, NMEM m);
-YAZ_EXPORT data1_datatype data1_maptype(data1_handle dh, char *t);
-YAZ_EXPORT data1_varset *data1_read_varset(data1_handle dh, const char *file);
-YAZ_EXPORT data1_vartype *data1_getvartypebyct(data1_handle dh,
-                                              data1_varset *set,
-                                              char *zclass, char *type);
-YAZ_EXPORT Z_Espec1 *data1_read_espec1(data1_handle dh, const char *file);
-YAZ_EXPORT int data1_doespec1(data1_handle dh, data1_node *n, Z_Espec1 *e);
-YAZ_EXPORT data1_esetname *data1_getesetbyname(data1_handle dh, 
-                                              data1_absyn *a,
-                                              const char *name);
-YAZ_EXPORT data1_element *data1_getelementbyname(data1_handle dh,
-                                                data1_absyn *absyn,
-                                                const char *name);
-YAZ_EXPORT data1_node *data1_mk_node2(data1_handle dh, NMEM m,
-                                      int type, data1_node *parent);
-
-YAZ_EXPORT data1_node *data1_mk_tag (data1_handle dh, NMEM nmem, 
-                                     const char *tag, const char **attr,
-                                     data1_node *at);
-YAZ_EXPORT data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem,
-                                       const char *tag, size_t len,
-                                       const char **attr,
-                                       data1_node *at);
-YAZ_EXPORT void data1_tag_add_attr (data1_handle dh, NMEM nmem,
-                                    data1_node *res, const char **attr);
-
-YAZ_EXPORT data1_node *data1_mk_text_n (data1_handle dh, NMEM mem,
-                                        const char *buf, size_t len,
-                                        data1_node *parent);
-YAZ_EXPORT data1_node *data1_mk_text_nf (data1_handle dh, NMEM mem,
-                                         const char *buf, size_t len,
-                                         data1_node *parent);
-YAZ_EXPORT data1_node *data1_mk_text (data1_handle dh, NMEM mem,
-                                      const char *buf, data1_node *parent);
-
-YAZ_EXPORT data1_node *data1_mk_comment_n (data1_handle dh, NMEM mem,
-                                           const char *buf, size_t len,
-                                           data1_node *parent);
-
-YAZ_EXPORT data1_node *data1_mk_comment (data1_handle dh, NMEM mem,
-                                         const char *buf, data1_node *parent);
-
-YAZ_EXPORT data1_node *data1_mk_preprocess_n (data1_handle dh, NMEM nmem,
-                                              const char *target, size_t len,
-                                              const char **attr,
-                                              data1_node *at);
-
-YAZ_EXPORT data1_node *data1_mk_preprocess (data1_handle dh, NMEM nmem,
-                                            const char *target,
-                                            const char **attr,
-                                            data1_node *at);
-
-YAZ_EXPORT data1_node *data1_mk_root (data1_handle dh, NMEM nmem,
-                                      const char *name);
-YAZ_EXPORT void data1_set_root(data1_handle dh, data1_node *res,
-                               NMEM nmem, const char *name);
-
-YAZ_EXPORT data1_node *data1_mk_tag_data_int (data1_handle dh, data1_node *at,
-                                              const char *tag, int num,
-                                              NMEM nmem);
-YAZ_EXPORT data1_node *data1_mk_tag_data_oid (data1_handle dh, data1_node *at,
-                                              const char *tag, Odr_oid *oid,
-                                              NMEM nmem);
-YAZ_EXPORT data1_node *data1_mk_tag_data_text (data1_handle dh, data1_node *at,
-                                               const char *tag,
-                                               const char *str,
-                                               NMEM nmem);
-YAZ_EXPORT data1_node *data1_mk_tag_data_text_uni (data1_handle dh,
-                                                   data1_node *at,
-                                                   const char *tag,
-                                                   const char *str,
-                                                   NMEM nmem);
-
-YAZ_EXPORT data1_absyn *data1_get_absyn (data1_handle dh, const char *name);
-
-YAZ_EXPORT data1_node *data1_search_tag (data1_handle dh, data1_node *n,
-                                         const char *tag);
-YAZ_EXPORT data1_node *data1_mk_tag_uni (data1_handle dh, NMEM nmem, 
-                                         const char *tag, data1_node *at);
-YAZ_EXPORT data1_attset *data1_get_attset (data1_handle dh, const char *name);
-YAZ_EXPORT data1_maptab *data1_read_maptab(data1_handle dh, const char *file);
-YAZ_EXPORT data1_node *data1_map_record(data1_handle dh, data1_node *n,
-                                       data1_maptab *map, NMEM m);
-YAZ_EXPORT data1_marctab *data1_read_marctab (data1_handle dh,
-                                             const char *file);
-YAZ_EXPORT char *data1_nodetomarc(data1_handle dh, data1_marctab *p,
-                                 data1_node *n, int selected, int *len);
-YAZ_EXPORT char *data1_nodetoidsgml(data1_handle dh, data1_node *n,
-                                   int select, int *len);
-YAZ_EXPORT Z_ExplainRecord *data1_nodetoexplain(data1_handle dh,
-                                               data1_node *n, int select,
-                                               ODR o);
-YAZ_EXPORT Z_BriefBib *data1_nodetosummary(data1_handle dh, 
-                                          data1_node *n, int select,
-                                          ODR o);
-YAZ_EXPORT char *data1_nodetosoif(data1_handle dh, data1_node *n, int select,
-                                 int *len);
-YAZ_EXPORT void data1_set_tabpath(data1_handle dh, const char *path);
-YAZ_EXPORT void data1_set_tabroot (data1_handle dp, const char *p);
-YAZ_EXPORT const char *data1_get_tabpath(data1_handle dh);
-YAZ_EXPORT const char *data1_get_tabroot(data1_handle dh);
-
-YAZ_EXPORT WRBUF data1_get_wrbuf (data1_handle dp);
-YAZ_EXPORT char **data1_get_read_buf (data1_handle dp, int **lenp);
-YAZ_EXPORT char **data1_get_map_buf (data1_handle dp, int **lenp);
-YAZ_EXPORT data1_absyn_cache *data1_absyn_cache_get (data1_handle dh);
-YAZ_EXPORT data1_attset_cache *data1_attset_cache_get (data1_handle dh);
-YAZ_EXPORT NMEM data1_nmem_get (data1_handle dh);
-YAZ_EXPORT void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out);
-YAZ_EXPORT char *data1_insert_string (data1_handle dh, data1_node *res,
-                                     NMEM m, const char *str);
-YAZ_EXPORT char *data1_insert_string_n (data1_handle dh, data1_node *res,
-                                        NMEM m, const char *str, size_t len);
-YAZ_EXPORT data1_node *data1_read_sgml (data1_handle dh, NMEM m,
-                                       const char *buf);
-YAZ_EXPORT data1_node *data1_read_xml (data1_handle dh,
-                                       int (*rf)(void *, char *, size_t),
-                                       void *fh, NMEM m);
-YAZ_EXPORT void data1_absyn_trav (data1_handle dh, void *handle,
-                                 void (*fh)(data1_handle dh,
-                                            void *h, data1_absyn *a));
-
-YAZ_EXPORT data1_attset *data1_attset_search_id (data1_handle dh, int id);
-
-YAZ_EXPORT char *data1_getNodeValue(data1_node* node, char* pTagPath);
-YAZ_EXPORT data1_node *data1_LookupNode(data1_node* node, char* pTagPath);
-YAZ_EXPORT int data1_CountOccurences(data1_node* node, char* pTagPath);
-
-YAZ_EXPORT FILE *data1_path_fopen (data1_handle dh, const char *file,
-                                   const char *mode);
-
-/* obsolete functions ... */
-
-YAZ_EXPORT data1_node *data1_mk_node (data1_handle dh, NMEM m);
-YAZ_EXPORT data1_node *data1_insert_taggeddata (data1_handle dh,
-                                                data1_node *root,
-                                                data1_node *at,
-                                                const char *tagname, NMEM m);
-YAZ_EXPORT data1_node *data1_mk_node_type (data1_handle dh, NMEM m, int type);
-YAZ_EXPORT data1_node *data1_add_taggeddata (data1_handle dh, data1_node *root,
-                                             data1_node *at,
-                                             const char *tagname,
-                                             NMEM m);
-
-YAZ_EXPORT data1_node *data1_get_root_tag (data1_handle dh, data1_node *n);
-
-YAZ_EXPORT int data1_iconv (data1_handle dh, NMEM m, data1_node *n,
-                            const char *tocode, 
-                            const char *fromcode);
-
-YAZ_EXPORT const char *data1_get_encoding (data1_handle dh, data1_node *n);
-
-YAZ_EXPORT int data1_is_xmlmode(data1_handle dh);
-
-YAZ_END_CDECL
-
-#endif
index 1965843..ca46b69 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile.am,v 1.23 2002-09-16 18:45:13 adam Exp $
+## $Id: Makefile.am,v 1.24 2002-10-22 12:51:18 adam Exp $
 
 if ISTHR
 extra=libyazthread.la
 
 if ISTHR
 extra=libyazthread.la
@@ -74,7 +74,6 @@ tcpip.o: $(top_srcdir)/comstack/tcpip.c
 
 libyaz_la_LIBADD=../odr/libodr.la \
  ../comstack/libcomstack.la ../server/libserver.la \
 
 libyaz_la_LIBADD=../odr/libodr.la \
  ../comstack/libcomstack.la ../server/libserver.la \
- ../util/libutil.la ../retrieval/libret.la \
- ../ccl/libccl.la ../zutil/libzutil.la \
+ ../util/libutil.la ../ccl/libccl.la ../zutil/libzutil.la \
  ../ill/libill.la ../z39.50/libz39.50.la
 
  ../ill/libill.la ../z39.50/libz39.50.la
 
diff --git a/retrieval/Makefile.am b/retrieval/Makefile.am
deleted file mode 100644 (file)
index aff1919..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-## $Id: Makefile.am,v 1.8 2002-09-11 21:25:57 adam Exp $
-
-noinst_LTLIBRARIES=libret.la
-
-libret_la_SOURCES = d1_handle.c d1_read.c d1_attset.c d1_tagset.c d1_absyn.c \
-  d1_grs.c d1_sutrs.c d1_varset.c d1_espec.c d1_doespec.c d1_map.c d1_marc.c \
-  d1_write.c d1_expout.c d1_sumout.c d1_soif.c d1_prtree.c d1_if.c
-
-AM_CPPFLAGS=-I$(top_srcdir)/include 
-
diff --git a/retrieval/d1_absyn.c b/retrieval/d1_absyn.c
deleted file mode 100644 (file)
index 349e4d5..0000000
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_absyn.c,v 1.34 2002-08-29 21:26:08 mike Exp $
- */
-
-#include <stdio.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <yaz/oid.h>
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-#define D1_MAX_NESTING  128
-
-struct data1_absyn_cache_info 
-{
-    char *name;
-    data1_absyn *absyn;
-    data1_absyn_cache next;
-};
-
-struct data1_attset_cache_info 
-{
-    char *name;
-    data1_attset *attset;
-    data1_attset_cache next;
-};
-
-data1_absyn *data1_absyn_search (data1_handle dh, const char *name)
-{
-    data1_absyn_cache p = *data1_absyn_cache_get (dh);
-
-    while (p)
-    {
-       if (!strcmp (name, p->name))
-           return p->absyn;
-       p = p->next;
-    }
-    return NULL;
-}
-
-void data1_absyn_trav (data1_handle dh, void *handle,
-                      void (*fh)(data1_handle dh, void *h, data1_absyn *a))
-{
-    data1_absyn_cache p = *data1_absyn_cache_get (dh);
-
-    while (p)
-    {
-       (*fh)(dh, handle, p->absyn);
-       p = p->next;
-    }
-}
-
-data1_absyn *data1_absyn_add (data1_handle dh, const char *name)
-{
-    char fname[512];
-    NMEM mem = data1_nmem_get (dh);
-
-    data1_absyn_cache p = (data1_absyn_cache)nmem_malloc (mem, sizeof(*p));
-    data1_absyn_cache *pp = data1_absyn_cache_get (dh);
-
-    sprintf(fname, "%s.abs", name);
-    p->absyn = data1_read_absyn (dh, fname, 0);
-    p->name = nmem_strdup (mem, name);
-    p->next = *pp;
-    *pp = p;
-    return p->absyn;
-}
-
-data1_absyn *data1_get_absyn (data1_handle dh, const char *name)
-{
-    data1_absyn *absyn;
-
-    if (!(absyn = data1_absyn_search (dh, name)))
-       absyn = data1_absyn_add (dh, name);
-    return absyn;
-}
-
-data1_attset *data1_attset_search_name (data1_handle dh, const char *name)
-{
-    data1_attset_cache p = *data1_attset_cache_get (dh);
-
-    while (p)
-    {
-       if (!strcmp (name, p->name))
-           return p->attset;
-       p = p->next;
-    }
-    return NULL;
-}
-
-data1_attset *data1_attset_search_id (data1_handle dh, int id)
-{
-    data1_attset_cache p = *data1_attset_cache_get (dh);
-
-    while (p)
-    {
-       if (id == p->attset->reference)
-           return p->attset;
-       p = p->next;
-    }
-    return NULL;
-}
-
-data1_attset *data1_attset_add (data1_handle dh, const char *name)
-{
-    char fname[512], aname[512];
-    NMEM mem = data1_nmem_get (dh);
-    data1_attset *attset;
-
-    strcpy (aname, name);
-    sprintf(fname, "%s.att", name);
-    attset = data1_read_attset (dh, fname);
-    if (!attset)
-    {
-       char *cp;
-       attset = data1_read_attset (dh, name);
-       if (attset && (cp = strrchr (aname, '.')))
-           *cp = '\0';
-    }
-    if (!attset)
-       yaz_log (LOG_WARN|LOG_ERRNO, "Couldn't load attribute set %s", name);
-    else
-    {
-       data1_attset_cache p = (data1_attset_cache)
-           nmem_malloc (mem, sizeof(*p));
-       data1_attset_cache *pp = data1_attset_cache_get (dh);
-       
-       attset->name = p->name = nmem_strdup (mem, aname);
-       p->attset = attset;
-       p->next = *pp;
-       *pp = p;
-    }
-    return attset;
-}
-
-data1_attset *data1_get_attset (data1_handle dh, const char *name)
-{
-    data1_attset *attset;
-
-    if (!(attset = data1_attset_search_name (dh, name)))
-       attset = data1_attset_add (dh, name);
-    return attset;
-}
-
-data1_esetname *data1_getesetbyname(data1_handle dh, data1_absyn *a,
-                                   const char *name)
-{
-    data1_esetname *r;
-
-    for (r = a->esetnames; r; r = r->next)
-       if (!data1_matchstr(r->name, name))
-           return r;
-    return 0;
-}
-
-data1_element *data1_getelementbytagname (data1_handle dh, data1_absyn *abs,
-                                         data1_element *parent,
-                                         const char *tagname)
-{
-    data1_element *r;
-
-    /* It's now possible to have a data1 tree with no abstract syntax */
-    if ( !abs )
-        return 0;
-
-    if (!parent)
-        r = abs->main_elements;
-    else
-       r = parent->children;
-
-    for (; r; r = r->next)
-    {
-       data1_name *n;
-
-       for (n = r->tag->names; n; n = n->next)
-           if (!data1_matchstr(tagname, n->name))
-               return r;
-    }
-    return 0;
-}
-
-data1_element *data1_getelementbyname (data1_handle dh, data1_absyn *absyn,
-                                      const char *name)
-{
-    data1_element *r;
-
-    /* It's now possible to have a data1 tree with no abstract syntax */
-    if ( !absyn )
-        return 0;
-    for (r = absyn->main_elements; r; r = r->next)
-       if (!data1_matchstr(r->name, name))
-           return r;
-    return 0;
-}
-
-
-void fix_element_ref (data1_handle dh, data1_absyn *absyn, data1_element *e)
-{
-    /* It's now possible to have a data1 tree with no abstract syntax */
-    if ( !absyn )
-        return;
-
-    for (; e; e = e->next)
-    {
-       if (!e->sub_name)
-       {
-           if (e->children)
-               fix_element_ref (dh, absyn, e->children);
-       }
-       else
-       {
-           data1_sub_elements *sub_e = absyn->sub_elements;
-           while (sub_e && strcmp (e->sub_name, sub_e->name))
-               sub_e = sub_e->next;
-           if (sub_e)
-               e->children = sub_e->elements;
-           else
-               yaz_log (LOG_WARN, "Unresolved reference to sub-elements %s",
-                     e->sub_name);
-       }
-    }
-}
-
-
-static int parse_termlists (data1_handle dh, data1_termlist ***tpp,
-                           char *p, const char *file, int lineno,
-                           const char *element_name, data1_absyn *res)
-{
-    data1_termlist **tp = *tpp;
-    do
-    {
-       char attname[512], structure[512];
-       char *source;
-       int r;
-       
-       if (!(r = sscanf(p, "%511[^:,]:%511[^,]", attname,
-                        structure)))
-       {
-           yaz_log(LOG_WARN,
-                   "%s:%d: Syntax error in termlistspec '%s'",
-                   file, lineno, p);
-           return -1;
-       }
-       if (*attname == '!')
-           strcpy(attname, element_name);
-       *tp = (data1_termlist *)
-           nmem_malloc(data1_nmem_get(dh), sizeof(**tp));
-       (*tp)->next = 0;
-       if (!((*tp)->att = data1_getattbyname(dh, res->attset,
-                                             attname)))
-       {
-           yaz_log(LOG_WARN,
-                   "%s:%d: Couldn't find att '%s' in attset",
-                   file, lineno, attname);
-           return -1;
-       }
-       if (r == 2 && (source = strchr(structure, ':')))
-           *source++ = '\0';   /* cut off structure .. */
-       else
-           source = "data";    /* ok: default is leaf data */
-       (*tp)->source = (char *)
-           nmem_strdup (data1_nmem_get (dh), source);
-       
-       if (r < 2) /* is the structure qualified? */
-           (*tp)->structure = "w";
-       else 
-           (*tp)->structure = (char *)
-               nmem_strdup (data1_nmem_get (dh), structure);
-       tp = &(*tp)->next;
-    }
-    while ((p = strchr(p, ',')) && *(++p));
-    *tpp = tp;
-    return 0;
-}
-
-data1_absyn *data1_read_absyn (data1_handle dh, const char *file,
-                               int file_must_exist)
-{
-    data1_sub_elements *cur_elements = NULL;
-    data1_absyn *res = 0;
-    FILE *f;
-    data1_element **ppl[D1_MAX_NESTING];
-    data1_esetname **esetpp;
-    data1_maptab **maptabp;
-    data1_marctab **marcp;
-    data1_termlist *all = 0;
-    data1_attset_child **attset_childp;
-    data1_tagset **tagset_childp;
-    int level = 0;
-    int lineno = 0;
-    int argc;
-    char *argv[50], line[512];
-
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "Couldn't open %s", file);
-        if (file_must_exist)
-            return 0;
-    }
-    
-    res = (data1_absyn *) nmem_malloc(data1_nmem_get(dh), sizeof(*res));
-    res->name = 0;
-    res->reference = VAL_NONE;
-    res->tagset = 0;
-    res->encoding = 0;
-    res->enable_xpath_indexing = (f ? 0 : 1);
-    tagset_childp = &res->tagset;
-
-    res->attset = data1_empty_attset (dh);
-    attset_childp =  &res->attset->children;
-
-    res->varset = 0;
-    res->esetnames = 0;
-    esetpp = &res->esetnames;
-    res->maptabs = 0;
-    maptabp = &res->maptabs;
-    res->marc = 0;
-    marcp = &res->marc;
-
-    res->sub_elements = NULL;
-    res->main_elements = NULL;
-    
-    while (f && (argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-    {
-       char *cmd = *argv;
-       if (!strcmp(cmd, "elm") || !strcmp(cmd, "element"))
-       {
-           data1_element *new_element;
-           int i;
-           char *p, *sub_p, *path, *name, *termlists;
-           int type, value;
-           data1_termlist **tp;
-
-           if (argc < 4)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to elm", file, lineno);
-               continue;
-           }
-           path = argv[1];
-           name = argv[2];
-           termlists = argv[3];
-
-           if (!cur_elements)
-           {
-                cur_elements = (data1_sub_elements *)
-                   nmem_malloc(data1_nmem_get(dh), sizeof(*cur_elements));
-               cur_elements->next = res->sub_elements;
-               cur_elements->elements = NULL;
-               cur_elements->name = "main";
-               res->sub_elements = cur_elements;
-               
-               level = 0;
-               ppl[level] = &cur_elements->elements;
-            }
-           p = path;
-           for (i = 1;; i++)
-           {
-               char *e;
-
-               if ((e = strchr(p, '/')))
-                   p = e+1;
-               else
-                   break;
-           }
-           if (i > level+1)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad level increase", file, lineno);
-               fclose(f);
-               return 0;
-           }
-           level = i;
-           new_element = *ppl[level-1] = (data1_element *)
-               nmem_malloc(data1_nmem_get(dh), sizeof(*new_element));
-           new_element->next = new_element->children = 0;
-           new_element->tag = 0;
-           new_element->termlists = 0;
-           new_element->sub_name = 0;
-           
-           tp = &new_element->termlists;
-           ppl[level-1] = &new_element->next;
-           ppl[level] = &new_element->children;
-           
-           /* consider subtree (if any) ... */
-           if ((sub_p = strchr (p, ':')) && sub_p[1])
-           {
-               *sub_p++ = '\0';
-               new_element->sub_name =
-                   nmem_strdup (data1_nmem_get(dh), sub_p);            
-           }
-           /* well-defined tag */
-           if (sscanf(p, "(%d,%d)", &type, &value) == 2)
-           {
-               if (!res->tagset)
-               {
-                   yaz_log(LOG_WARN, "%s:%d: No tagset loaded", file, lineno);
-                   fclose(f);
-                   return 0;
-               }
-               if (!(new_element->tag = data1_gettagbynum (dh, res->tagset,
-                                                           type, value)))
-               {
-                   yaz_log(LOG_WARN, "%s:%d: Couldn't find tag %s in tagset",
-                        file, lineno, p);
-                   fclose(f);
-                   return 0;
-               }
-           }
-           /* private tag */
-           else if (*p)
-           {
-               data1_tag *nt =
-                   new_element->tag = (data1_tag *)
-                   nmem_malloc(data1_nmem_get (dh),
-                               sizeof(*new_element->tag));
-               nt->which = DATA1T_string;
-               nt->value.string = nmem_strdup(data1_nmem_get (dh), p);
-               nt->names = (data1_name *)
-                   nmem_malloc(data1_nmem_get(dh), 
-                               sizeof(*new_element->tag->names));
-               nt->names->name = nt->value.string;
-               nt->names->next = 0;
-               nt->kind = DATA1K_string;
-               nt->next = 0;
-               nt->tagset = 0;
-           }
-           else
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad element", file, lineno);
-               fclose(f);
-               return 0;
-           }
-           /* parse termList definitions */
-           p = termlists;
-           if (*p != '-')
-           {
-               assert (res->attset);
-               
-               if (parse_termlists (dh, &tp, p, file, lineno, name, res))
-               {
-                   fclose (f);
-                   return 0;
-               }
-               *tp = all; /* append any ALL entries to the list */
-           }
-           new_element->name = nmem_strdup(data1_nmem_get (dh), name);
-       }
-       else if (!strcmp(cmd, "section"))
-       {
-           char *name;
-           
-           if (argc < 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to section",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           
-            cur_elements = (data1_sub_elements *)
-               nmem_malloc(data1_nmem_get(dh), sizeof(*cur_elements));
-           cur_elements->next = res->sub_elements;
-           cur_elements->elements = NULL;
-           cur_elements->name = nmem_strdup (data1_nmem_get(dh), name);
-           res->sub_elements = cur_elements;
-           
-           level = 0;
-           ppl[level] = &cur_elements->elements;
-       }
-        else if (!strcmp(cmd, "xpath"))
-        {
-            if (argc != 2)
-            {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to 'xpath' directive",
-                    file, lineno);
-               continue;
-            }
-            if (!strcmp(argv[1], "enable"))
-                res->enable_xpath_indexing = 1;
-            else if (!strcmp (argv[1], "disable"))
-                res->enable_xpath_indexing = 0;
-            else
-            {
-               yaz_log(LOG_WARN, "%s:%d: Expecting disable/enable "
-                        "after 'xpath' directive", file, lineno);
-            }
-        }
-       else if (!strcmp(cmd, "all"))
-       {
-           data1_termlist **tp = &all;
-           if (all)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Too many 'all' directives - ignored",
-                    file, lineno);
-               continue;
-           }
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to 'all' directive",
-                    file, lineno);
-               continue;
-           }
-           if (parse_termlists (dh, &tp, argv[1], file, lineno, 0, res))
-           {
-               fclose (f);
-               return 0;
-           }
-       }
-       else if (!strcmp(cmd, "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to name directive",
-                    file, lineno);
-               continue;
-           }
-           res->name = nmem_strdup(data1_nmem_get(dh), argv[1]);
-       }
-       else if (!strcmp(cmd, "reference"))
-       {
-           char *name;
-           
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to reference",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if ((res->reference = oid_getvalbyname(name)) == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown tagset ref '%s'", 
-                    file, lineno, name);
-               continue;
-           }
-       }
-       else if (!strcmp(cmd, "attset"))
-       {
-           char *name;
-           data1_attset *attset;
-           
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to attset",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (!(attset = data1_get_attset (dh, name)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Couldn't find attset  %s",
-                    file, lineno, name);
-               continue;
-           }
-           *attset_childp = (data1_attset_child *)
-               nmem_malloc (data1_nmem_get(dh), sizeof(**attset_childp));
-           (*attset_childp)->child = attset;
-           (*attset_childp)->next = 0;
-           attset_childp = &(*attset_childp)->next;
-       }
-       else if (!strcmp(cmd, "tagset"))
-       {
-           char *name;
-           int type = 0;
-           if (argc < 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to tagset",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (argc == 3)
-               type = atoi(argv[2]);
-           *tagset_childp = data1_read_tagset (dh, name, type);
-           if (!(*tagset_childp))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Couldn't load tagset %s",
-                    file, lineno, name);
-               continue;
-           }
-           tagset_childp = &(*tagset_childp)->next;
-       }
-       else if (!strcmp(cmd, "varset"))
-       {
-           char *name;
-
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args in varset",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (!(res->varset = data1_read_varset (dh, name)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Couldn't load Varset %s",
-                    file, lineno, name);
-               continue;
-           }
-       }
-       else if (!strcmp(cmd, "esetname"))
-       {
-           char *name, *fname;
-
-           if (argc != 3)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args in esetname",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           fname = argv[2];
-           
-           *esetpp = (data1_esetname *)
-               nmem_malloc(data1_nmem_get(dh), sizeof(**esetpp));
-           (*esetpp)->name = nmem_strdup(data1_nmem_get(dh), name);
-           (*esetpp)->next = 0;
-           if (*fname == '@')
-               (*esetpp)->spec = 0;
-           else if (!((*esetpp)->spec = data1_read_espec1 (dh, fname)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Espec-1 read failed for %s",
-                    file, lineno, fname);
-               continue;
-           }
-           esetpp = &(*esetpp)->next;
-       }
-       else if (!strcmp(cmd, "maptab"))
-       {
-           char *name;
-           
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args for maptab",
-                     file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (!(*maptabp = data1_read_maptab (dh, name)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Couldn't load maptab %s",
-                     file, lineno, name);
-               continue;
-           }
-           maptabp = &(*maptabp)->next;
-       }
-       else if (!strcmp(cmd, "marc"))
-       {
-           char *name;
-           
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # or args for marc",
-                    file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (!(*marcp = data1_read_marctab (dh, name)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Couldn't read marctab %s",
-                     file, lineno, name);
-               continue;
-           }
-           marcp = &(*marcp)->next;
-       }
-       else if (!strcmp(cmd, "encoding"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # or args for encoding",
-                    file, lineno);
-               continue;
-           }
-            res->encoding = nmem_strdup (data1_nmem_get(dh), argv[1]);
-       }
-       else
-       {
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", file, 
-                    lineno, cmd);
-           continue;
-       }
-    }
-    if (f)
-        fclose(f);
-    
-    for (cur_elements = res->sub_elements; cur_elements;
-        cur_elements = cur_elements->next)
-    {
-       if (!strcmp (cur_elements->name, "main"))
-           res->main_elements = cur_elements->elements;
-       fix_element_ref (dh, res, cur_elements->elements);
-    }
-    yaz_log (LOG_DEBUG, "%s: data1_read_absyn end", file);
-    return res;
-}
diff --git a/retrieval/d1_attset.c b/retrieval/d1_attset.c
deleted file mode 100644 (file)
index 72d271c..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_attset.c,v $
- * Revision 1.15  2002-04-04 20:49:46  adam
- * New functions yaz_is_abspath, yaz_path_fopen_base
- *
- * Revision 1.14  1999/11/30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.13  1999/10/21 12:06:29  adam
- * Retrieval module no longer uses ctype.h - functions.
- *
- * Revision 1.12  1999/08/27 09:40:32  adam
- * Renamed logf function to yaz_log. Removed VC++ project files.
- *
- * Revision 1.11  1998/10/14 13:31:56  adam
- * Bug fix. Bug introduced by previous commit.
- *
- * Revision 1.10  1998/10/13 16:09:48  adam
- * Added support for arbitrary OID's for tagsets, schemas and attribute sets.
- * Added support for multiple attribute set references and tagset references
- * from an abstract syntax file.
- * Fixed many bad logs-calls in routines that read the various
- * specifications regarding data1 (*.abs,*.att,...) and made the messages
- * consistent whenever possible.
- * Added extra 'lineno' argument to function readconf_line.
- *
- * Revision 1.9  1998/05/18 13:07:03  adam
- * Changed the way attribute sets are handled by the retriaval module.
- * Extended Explain conversion / schema.
- * Modified server and client to work with ASN.1 compiled protocol handlers.
- *
- * Revision 1.8  1998/02/11 11:53:35  adam
- * Changed code so that it compiles as C++.
- *
- * Revision 1.7  1997/09/17 12:10:34  adam
- * YAZ version 1.4.
- *
- * 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
- * Reversed fclose and return;
- *
- * Revision 1.3  1995/12/13  17:14:26  quinn
- * *** empty log message ***
- *
- * Revision 1.2  1995/11/01  16:34:55  quinn
- * Making data1 look for tables in data1_tabpath
- *
- * Revision 1.1  1995/11/01  11:56:07  quinn
- * Added Retrieval (data management) functions en masse.
- *
- *
- */
-
-#include <stdio.h>
-#include <assert.h>
-#include <stdlib.h>
-
-#include <yaz/log.h>
-#include <yaz/d1_attset.h>
-#include <yaz/data1.h>
-
-data1_att *data1_getattbyname(data1_handle dh, data1_attset *s, char *name)
-{
-    data1_att *r;
-    data1_attset_child *c;
-    
-    /* scan local set */
-    for (r = s->atts; r; r = r->next)
-       if (!data1_matchstr(r->name, name))
-           return r;
-    for (c = s->children; c; c = c->next)
-    {
-       assert (c->child);
-       /* scan included sets */
-       if ((r = data1_getattbyname (dh, c->child, name)))
-           return r;
-    }
-    return 0;
-}
-
-data1_attset *data1_empty_attset(data1_handle dh)
-{
-    NMEM mem = data1_nmem_get (dh);
-    data1_attset *res = (data1_attset*) nmem_malloc(mem,sizeof(*res));
-
-    res->name = 0;
-    res->reference = VAL_NONE;
-    res->atts = 0;
-    res->children = 0;
-    res->next = 0;
-    return res;
-}
-
-data1_attset *data1_read_attset(data1_handle dh, const char *file)
-{
-    data1_attset *res = 0;
-    data1_attset_child **childp;
-    data1_att **attp;
-    FILE *f;
-    NMEM mem = data1_nmem_get (dh);
-    int lineno = 0;
-    int argc;
-    char *argv[50], line[512];
-
-    if (!(f = data1_path_fopen(dh, file, "r")))
-       return NULL;
-    res = data1_empty_attset (dh);
-
-    childp = &res->children;
-    attp = &res->atts;
-
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-    {
-       char *cmd = argv[0];
-       if (!strcmp(cmd, "att"))
-       {
-           int num;
-           char *name;
-           data1_att *t;
-           data1_local_attribute *locals;
-           
-           if (argc < 3)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to att", file, lineno);
-               continue;
-           }
-           num = atoi (argv[1]);
-           name = argv[2];
-           
-           if (argc == 3) /* no local attributes given */
-           {
-               locals = (data1_local_attribute *)
-                   nmem_malloc(mem, sizeof(*locals));
-               locals->local = num;
-               locals->next = 0;
-           }
-           else /* parse the string "local{,local}" */
-           {
-               char *p = argv[3];
-               data1_local_attribute **ap = &locals;
-               do
-               {
-                   *ap = (data1_local_attribute *)
-                       nmem_malloc(mem, sizeof(**ap));
-                   (*ap)->local = atoi(p);
-                   (*ap)->next = 0;
-                   ap = &(*ap)->next;
-               }
-               while ((p = strchr(p, ',')) && *(++p));
-           }
-           t = *attp = (data1_att *)nmem_malloc(mem, sizeof(*t));
-           t->parent = res;
-           t->name = nmem_strdup(mem, name);
-           t->value = num;
-           t->locals = locals;
-           t->next = 0;
-           attp = &t->next;
-       }
-       else if (!strcmp(cmd, "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to name", file, lineno);
-               continue;
-           }
-       }
-       else if (!strcmp(cmd, "reference"))
-       {
-           char *name;
-
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to reference",
-                       file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if ((res->reference = oid_getvalbyname(name)) == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown reference oid '%s'",
-                       file, lineno, name);
-               fclose(f);
-               return 0;
-           }
-       }
-       else if (!strcmp(cmd, "ordinal"))
-       {
-           yaz_log (LOG_WARN, "%s:%d: Directive ordinal ignored",
-                    file, lineno);
-       }
-       else if (!strcmp(cmd, "include"))
-       {
-           char *name;
-           data1_attset *attset;
-
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args to include",
-                       file, lineno);
-               continue;
-           }
-           name = argv[1];
-
-           if (!(attset = data1_get_attset (dh, name)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Include of attset %s failed",
-                       file, lineno, name);
-               continue;
-               
-           }
-           *childp = (data1_attset_child *)
-               nmem_malloc (mem, sizeof(**childp));
-           (*childp)->child = attset;
-           (*childp)->next = 0;
-           childp = &(*childp)->next;
-       }
-       else
-       {
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'",
-                   file, lineno, cmd);
-       }
-    }
-    fclose(f);
-    return res;
-}
diff --git a/retrieval/d1_doespec.c b/retrieval/d1_doespec.c
deleted file mode 100644 (file)
index 19c3aba..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_doespec.c,v 1.15 2002-09-24 13:58:13 adam Exp $
- */
-
-#include <assert.h>
-
-#include <yaz/oid.h>
-#include <yaz/log.h>
-#include <yaz/proto.h>
-#include <yaz/data1.h>
-
-static int match_children(data1_handle dh, data1_node *n,
-                         Z_Espec1 *e, int i, Z_ETagUnit **t,
-    int num);
-
-static int match_children_wildpath(data1_handle dh, data1_node *n,
-                                  Z_Espec1 *e, int i,
-                                  Z_ETagUnit **t, int num)
-{
-    return 0;
-}
-
-/*
- * Locate a specific triple within a variant.
- * set is the set to look for, universal set is the set that applies to a
- * triple with an unknown set.
- */
-static Z_Triple *find_triple(Z_Variant *var, oid_value universalset,
-    oid_value set, int zclass, int type)
-{
-    int i;
-    oident *defaultsetent = oid_getentbyoid(var->globalVariantSetId);
-    oid_value defaultset = defaultsetent ? defaultsetent->value :
-       universalset;
-
-    for (i = 0; i < var->num_triples; i++)
-    {
-       oident *cursetent =
-           oid_getentbyoid(var->triples[i]->variantSetId);
-       oid_value curset = cursetent ? cursetent->value : defaultset;
-
-       if (set == curset &&
-           *var->triples[i]->zclass == zclass &&
-           *var->triples[i]->type == type)
-           return var->triples[i];
-    }
-    return 0;
-}
-
-static void mark_subtree(data1_node *n, int make_variantlist, int no_data,
-    int get_bytes, Z_Variant *vreq)
-{
-    data1_node *c;
-
-#if 1
-    if (n->which == DATA1N_tag)
-#else
-    if (n->which == DATA1N_tag && (!n->child || n->child->which != DATA1N_tag))
-    /*
-     * This seems to cause multi-level elements to fall out when only a
-     * top-level elementRequest has been given... Problem is, I can't figure
-     * out what it was supposed to ACHIEVE.... delete when code has been
-     * verified.
-     */
-#endif
-    {
-       n->u.tag.node_selected = 1;
-       n->u.tag.make_variantlist = make_variantlist;
-       n->u.tag.no_data_requested = no_data;
-       n->u.tag.get_bytes = get_bytes;
-    }
-
-    for (c = n->child; c; c = c->next)
-    {
-       if (c->which == DATA1N_tag && (!n->child ||
-           n->child->which != DATA1N_tag))
-       {
-           c->u.tag.node_selected = 1;
-           c->u.tag.make_variantlist = make_variantlist;
-           c->u.tag.no_data_requested = no_data;
-           c->u.tag.get_bytes = get_bytes;
-       }
-       mark_subtree(c, make_variantlist, no_data, get_bytes, vreq);
-    }
-}
-
-
-static void match_triple (data1_handle dh, Z_Variant *vreq,
-                         oid_value defsetval,
-                         oid_value var1, data1_node *n)
-{
-    data1_node **c;
-
-    if (!(n = n->child))
-        return;
-    if (n->which != DATA1N_variant)
-       return;
-    c = &n->child;
-    while (*c)
-    {
-       int remove_flag = 0;
-       Z_Triple *r;
-       
-       assert ((*c)->which == DATA1N_variant);
-       
-       if ((*c)->u.variant.type->zclass->zclass == 4 &&
-           (*c)->u.variant.type->type == 1)
-       {
-           if ((r = find_triple(vreq, defsetval, var1, 4, 1)) &&
-               (r->which == Z_Triple_internationalString))
-           {
-               const char *string_value =
-                   r->value.internationalString;
-               if (strcmp ((*c)->u.variant.value, string_value))
-                   remove_flag = 1;
-           }
-       }
-       if (remove_flag)
-       {
-           data1_free_tree (dh, *c);
-           *c = (*c)->next;
-       }
-       else
-       {
-           match_triple (dh, vreq, defsetval, var1, *c);
-           c = &(*c)->next;
-       }
-    }
-}
-                               
-static int match_children_here (data1_handle dh, data1_node *n,
-                               Z_Espec1 *e, int i,
-                               Z_ETagUnit **t, int num)
-{
-    int counter = 0, hits = 0;
-    data1_node *c;
-    Z_ETagUnit *tp = *t;
-    Z_Occurrences *occur;
-
-    for (c = n->child; c ; c = c->next)
-    {
-       data1_tag *tag = 0;
-
-       if (c->which != DATA1N_tag)
-            continue;
-
-       if (tp->which == Z_ETagUnit_specificTag)
-       {
-           Z_SpecificTag *want = tp->u.specificTag;
-           occur = want->occurrences;
-           if (c->u.tag.element)
-               tag = c->u.tag.element->tag;
-           if (*want->tagType != ((tag && tag->tagset) ? tag->tagset->type :
-               3))
-               continue;
-           if (want->tagValue->which == Z_StringOrNumeric_numeric)
-           {
-               if (!tag || tag->which != DATA1T_numeric)
-                   continue;
-               if (*want->tagValue->u.numeric != tag->value.numeric)
-                   continue;
-           }
-           else
-           {
-               assert(want->tagValue->which == Z_StringOrNumeric_string);
-               if (tag && tag->which != DATA1T_string)
-                   continue;
-               if (data1_matchstr(want->tagValue->u.string,
-                   tag ? tag->value.string : c->u.tag.tag))
-                   continue;
-           }
-       }
-       else
-           occur = tp->u.wildThing;
-
-       /*
-        * Ok, so we have a matching tag. Are we within occurrences-range?
-        */
-       counter++;
-       if (occur && occur->which == Z_Occurrences_last)
-       {
-           yaz_log(LOG_WARN, "Can't do occurrences=last (yet)");
-           return 0;
-       }
-       if (!occur || occur->which == Z_Occurrences_all ||
-           (occur->which == Z_Occurrences_values && counter >=
-           *occur->u.values->start))
-       {
-           if (match_children(dh, c, e, i, t + 1, num - 1))
-           {
-               c->u.tag.node_selected = 1;
-               /*
-                * Consider the variant specification if this is a complete
-                * match.
-                */
-               if (num == 1)
-               {
-                   int show_variantlist = 0;
-                   int no_data = 0;
-                   int get_bytes = -1;
-
-                   Z_Variant *vreq =
-                       e->elements[i]->u.simpleElement->variantRequest;
-                   oident *defset = oid_getentbyoid(e->defaultVariantSetId);
-                   oid_value defsetval = defset ? defset->value : VAL_NONE;
-                   oid_value var1 = oid_getvalbyname("Variant-1");
-
-                   if (!vreq)
-                       vreq = e->defaultVariantRequest;
-
-                   if (vreq)
-                   {
-                       Z_Triple *r;
-
-                       /*
-                        * 6,5: meta-data requested, variant list.
-                        */
-                       if (find_triple(vreq, defsetval, var1, 6, 5))
-                           show_variantlist = 1;
-                       /*
-                        * 9,1: Miscellaneous, no data requested.
-                        */
-                       if (find_triple(vreq, defsetval, var1, 9, 1))
-                           no_data = 1;
-
-                       /* howmuch */
-                       if ((r = find_triple(vreq, defsetval, var1, 5, 5)))
-                           if (r->which == Z_Triple_integer)
-                               get_bytes = *r->value.integer;
-
-                       if (!show_variantlist)
-                           match_triple (dh, vreq, defsetval, var1, c);
-                   }
-                   mark_subtree(c, show_variantlist, no_data, get_bytes, vreq);
-               }
-               hits++;
-               /*
-                * have we looked at enough children?
-                */
-               if (!occur || (occur->which == Z_Occurrences_values &&
-                   (!occur->u.values->howMany ||
-                   counter - *occur->u.values->start >=
-                   *occur->u.values->howMany - 1)))
-                   return hits;
-           }
-       }
-    }
-    return hits;
-}
-
-static int match_children(data1_handle dh, data1_node *n, Z_Espec1 *e,
-                         int i, Z_ETagUnit **t, int num)
-{
-    int res;
-
-    if (!num)
-       return 1;
-    switch (t[0]->which)
-    {
-    case Z_ETagUnit_wildThing:
-    case Z_ETagUnit_specificTag:
-        res = match_children_here(dh, n, e, i, t, num); break;
-    case Z_ETagUnit_wildPath:
-        res = match_children_wildpath(dh, n, e, i, t, num); break;
-    default:
-        abort();
-    }
-    return res;
-}
-
-int data1_doespec1 (data1_handle dh, data1_node *n, Z_Espec1 *e)
-{
-    int i;
-
-    n = data1_get_root_tag (dh, n);
-    if (n && n->which == DATA1N_tag)
-        n->u.tag.node_selected = 1;
-    
-    for (i = 0; i < e->num_elements; i++)
-    {
-        if (e->elements[i]->which != Z_ERequest_simpleElement)
-            return 100;
-        match_children(dh, n, e, i,
-                       e->elements[i]->u.simpleElement->path->tags,
-                       e->elements[i]->u.simpleElement->path->num_tags);
-    }
-    return 0;
-}
diff --git a/retrieval/d1_espec.c b/retrieval/d1_espec.c
deleted file mode 100644 (file)
index 0b12c27..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_espec.c,v 1.22 2002-05-03 13:48:27 adam Exp $
- */
-
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-#include <yaz/odr.h>
-#include <yaz/proto.h>
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-static Z_Variant *read_variant(int argc, char **argv, NMEM nmem,
-                              const char *file, int lineno)
-{
-    Z_Variant *r = (Z_Variant *)nmem_malloc(nmem, sizeof(*r));
-    oident var1;
-    int i;
-    int oid[OID_SIZE];
-
-    var1.proto = PROTO_Z3950;
-    var1.oclass = CLASS_VARSET;
-    var1.value = VAL_VAR1;
-    r->globalVariantSetId = odr_oiddup_nmem(nmem, oid_ent_to_oid(&var1, oid));
-
-    if (argc)
-       r->triples = (Z_Triple **)nmem_malloc(nmem, sizeof(Z_Triple*) * argc);
-    else
-       r->triples = 0;
-    r->num_triples = argc;
-    for (i = 0; i < argc; i++)
-    {
-       int zclass, type;
-       char value[512];
-       Z_Triple *t;
-
-       if (sscanf(argv[i], "(%d,%d,%511[^)])", &zclass, &type, value) < 3)
-       {
-           yaz_log(LOG_WARN, "%s:%d: Syntax error in variant component '%s'",
-                   file, lineno, argv[i]);
-           return 0;
-       }
-       t = r->triples[i] = (Z_Triple *)nmem_malloc(nmem, sizeof(Z_Triple));
-       t->variantSetId = 0;
-       t->zclass = (int *)nmem_malloc(nmem, sizeof(int));
-       *t->zclass = zclass;
-       t->type = (int *)nmem_malloc(nmem, sizeof(int));
-       *t->type = type;
-       /*
-        * This is wrong.. we gotta look up the correct type for the
-        * variant, I guess... damn this stuff.
-        */
-       if (*value == '@')
-       {
-           t->which = Z_Triple_null;
-           t->value.null = odr_nullval();
-       }
-       else if (d1_isdigit(*value))
-       {
-           t->which = Z_Triple_integer;
-           t->value.integer = (int *)
-               nmem_malloc(nmem, sizeof(*t->value.integer));
-           *t->value.integer = atoi(value);
-       }
-       else
-       {
-           t->which = Z_Triple_internationalString;
-           t->value.internationalString = (char *)
-               nmem_malloc(nmem, strlen(value)+1);
-           strcpy(t->value.internationalString, value);
-       }
-    }
-    return r;
-}
-
-static Z_Occurrences *read_occurrences(char *occ, NMEM nmem,
-                                      const char *file, int lineno)
-{
-    Z_Occurrences *op = (Z_Occurrences *)nmem_malloc(nmem, sizeof(*op));
-    char *p;
-    
-    if (!occ)
-    {
-       op->which = Z_Occurrences_values;
-       op->u.values = (Z_OccurValues *)
-           nmem_malloc(nmem, sizeof(Z_OccurValues));
-       op->u.values->start = (int *)nmem_malloc(nmem, sizeof(int));
-       *op->u.values->start = 1;
-       op->u.values->howMany = 0;
-    }
-    else if (!strcmp(occ, "all"))
-    {
-       op->which = Z_Occurrences_all;
-       op->u.all = odr_nullval();
-    }
-    else if (!strcmp(occ, "last"))
-    {
-       op->which = Z_Occurrences_last;
-       op->u.all = odr_nullval();
-    }
-    else
-    {
-       Z_OccurValues *ov = (Z_OccurValues *)nmem_malloc(nmem, sizeof(*ov));
-    
-       if (!d1_isdigit(*occ))
-       {
-           yaz_log(LOG_WARN, "%s:%d: Bad occurrences-spec %s",
-                   file, lineno, occ);
-           return 0;
-       }
-       op->which = Z_Occurrences_values;
-       op->u.values = ov;
-       ov->start = (int *)nmem_malloc(nmem, sizeof(*ov->start));
-       *ov->start = atoi(occ);
-       if ((p = strchr(occ, '+')))
-       {
-           ov->howMany = (int *)nmem_malloc(nmem, sizeof(*ov->howMany));
-           *ov->howMany = atoi(p + 1);
-       }
-       else
-           ov->howMany = 0;
-    }
-    return op;
-}
-
-
-static Z_ETagUnit *read_tagunit(char *buf, NMEM nmem,
-                               const char *file, int lineno)
-{
-    Z_ETagUnit *u = (Z_ETagUnit *)nmem_malloc(nmem, sizeof(*u));
-    int terms;
-    int type;
-    char value[512], occ[512];
-    
-    if (*buf == '*')
-    {
-       u->which = Z_ETagUnit_wildPath;
-       u->u.wildPath = odr_nullval();
-    }
-    else if (*buf == '?')
-    {
-       u->which = Z_ETagUnit_wildThing;
-       if (buf[1] == ':')
-           u->u.wildThing = read_occurrences(buf+2, nmem, file, lineno);
-       else
-           u->u.wildThing = read_occurrences(0, nmem, file, lineno);
-    }
-    else if ((terms = sscanf(buf, "(%d,%511[^)]):%511[a-zA-Z0-9+]",
-                             &type, value, occ)) >= 2)
-    {
-       int numval;
-       Z_SpecificTag *t;
-       char *valp = value;
-       int force_string = 0;
-       
-       if (*valp == '\'')
-       {
-           valp++;
-           force_string = 1;
-       }
-       u->which = Z_ETagUnit_specificTag;
-       u->u.specificTag = t = (Z_SpecificTag *)nmem_malloc(nmem, sizeof(*t));
-       t->tagType = (int *)nmem_malloc(nmem, sizeof(*t->tagType));
-       *t->tagType = type;
-       t->tagValue = (Z_StringOrNumeric *)
-           nmem_malloc(nmem, sizeof(*t->tagValue));
-       if (!force_string && (numval = atoi(valp)))
-       {
-           t->tagValue->which = Z_StringOrNumeric_numeric;
-           t->tagValue->u.numeric = (int *)nmem_malloc(nmem, sizeof(int));
-           *t->tagValue->u.numeric = numval;
-       }
-       else
-       {
-           t->tagValue->which = Z_StringOrNumeric_string;
-           t->tagValue->u.string = (char *)nmem_malloc(nmem, strlen(valp)+1);
-           strcpy(t->tagValue->u.string, valp);
-       }
-       if (terms > 2) /* an occurrences-spec exists */
-           t->occurrences = read_occurrences(occ, nmem, file, lineno);
-       else
-           t->occurrences = 0;
-    }
-    return u;
-}
-
-/*
- * Read an element-set specification from a file.
- * NOTE: If !o, memory is allocated directly from the heap by nmem_malloc().
- */
-Z_Espec1 *data1_read_espec1 (data1_handle dh, const char *file)
-{
-    FILE *f;
-    NMEM nmem = data1_nmem_get (dh);
-    int lineno = 0;
-    int argc, size_esn = 0;
-    char *argv[50], line[512];
-    Z_Espec1 *res = (Z_Espec1 *)nmem_malloc(nmem, sizeof(*res));
-    
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "%s", file);
-       return 0;
-    }
-    
-    res->num_elementSetNames = 0;
-    res->elementSetNames = 0;
-    res->defaultVariantSetId = 0;
-    res->defaultVariantRequest = 0;
-    res->defaultTagType = 0;
-    res->num_elements = 0;
-    res->elements = 0;
-    
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-       if (!strcmp(argv[0], "elementsetnames"))
-       {
-           int nnames = argc-1, i;
-           
-           if (!nnames)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Empty elementsetnames directive",
-                       file, lineno);
-               continue;
-           }
-           
-           res->elementSetNames =
-               (char **)nmem_malloc(nmem, sizeof(char**)*nnames);
-           for (i = 0; i < nnames; i++)
-           {
-               res->elementSetNames[i] = (char *)
-                   nmem_malloc(nmem, strlen(argv[i+1])+1);
-               strcpy(res->elementSetNames[i], argv[i+1]);
-           }
-           res->num_elementSetNames = nnames;
-       }
-       else if (!strcmp(argv[0], "defaultvariantsetid"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s",
-                       file, lineno, argv[0]);
-               continue;
-           }
-           if (!(res->defaultVariantSetId =
-                 odr_getoidbystr_nmem(nmem, argv[1])))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad defaultvariantsetid",
-                       file, lineno);
-               continue;
-           }
-       }
-       else if (!strcmp(argv[0], "defaulttagtype"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s",
-                       file, lineno, argv[0]);
-               continue;
-           }
-           res->defaultTagType = (int *)nmem_malloc(nmem, sizeof(int));
-           *res->defaultTagType = atoi(argv[1]);
-       }
-       else if (!strcmp(argv[0], "defaultvariantrequest"))
-       {
-           if (!(res->defaultVariantRequest =
-                 read_variant(argc-1, argv+1, nmem, file, lineno)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad defaultvariantrequest",
-                       file, lineno);
-               continue;
-           }
-       }
-       else if (!strcmp(argv[0], "simpleelement"))
-       {
-           Z_ElementRequest *er;
-           Z_SimpleElement *se;
-           Z_ETagPath *tp;
-           char *path = argv[1];
-           char *ep;
-           int num, i = 0;
-           
-           if (!res->elements)
-               res->elements = (Z_ElementRequest **)
-                   nmem_malloc(nmem, size_esn = 24*sizeof(er));
-           else if (res->num_elements >= (int) (size_esn/sizeof(er)))
-           {
-               Z_ElementRequest **oe = res->elements;
-               size_esn *= 2;
-               res->elements = (Z_ElementRequest **)
-                   nmem_malloc (nmem, size_esn*sizeof(er));
-               memcpy (res->elements, oe, size_esn/2);
-           }
-           if (argc < 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args for %s",
-                       file, lineno, argv[0]);
-               continue;
-           }
-           
-           res->elements[res->num_elements++] = er =
-               (Z_ElementRequest *)nmem_malloc(nmem, sizeof(*er));
-           er->which = Z_ERequest_simpleElement;
-           er->u.simpleElement = se = (Z_SimpleElement *)
-               nmem_malloc(nmem, sizeof(*se));
-           se->variantRequest = 0;
-           se->path = tp = (Z_ETagPath *)nmem_malloc(nmem, sizeof(*tp));
-           tp->num_tags = 0;
-           /*
-            * Parse the element selector.
-            */
-           for (num = 1, ep = path; (ep = strchr(ep, '/')); num++, ep++)
-               ;
-           tp->tags = (Z_ETagUnit **)
-               nmem_malloc(nmem, sizeof(Z_ETagUnit*)*num);
-           
-           for ((ep = strchr(path, '/')) ; path ;
-                (void)((path = ep) && (ep = strchr(path, '/'))))
-           {
-               Z_ETagUnit *tagunit;
-               if (ep)
-                   ep++;
-               
-               assert(i<num);
-               tagunit = read_tagunit(path, nmem, file, lineno);
-               if (!tagunit)
-               {
-                   yaz_log (LOG_WARN, "%s%d: Bad tag unit at %s",
-                            file, lineno, path);
-                   break;
-               }
-               tp->tags[tp->num_tags++] = tagunit;
-           }
-           
-           if (argc > 2 && !strcmp(argv[2], "variant"))
-               se->variantRequest=
-                   read_variant(argc-3, argv+3, nmem, file, lineno);
-       }
-       else
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'",
-                   file, lineno, argv[0]);
-    fclose (f);
-    return res;
-}
diff --git a/retrieval/d1_expout.c b/retrieval/d1_expout.c
deleted file mode 100644 (file)
index b6e2bab..0000000
+++ /dev/null
@@ -1,1460 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_expout.c,v $
- * Revision 1.17  1999-11-30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.16  1999/08/27 09:40:32  adam
- * Renamed logf function to yaz_log. Removed VC++ project files.
- *
- * Revision 1.15  1998/09/28 12:44:40  adam
- * Fixed bug in f_integer.
- *
- * Revision 1.14  1998/06/08 14:26:41  adam
- * Fixed bug in f_queryTypeDetails.
- *
- * Revision 1.13  1998/06/05 08:58:48  adam
- * Fixed un-initialised var in f_rpnCapabilities.
- *
- * Revision 1.12  1998/05/18 13:07:04  adam
- * Changed the way attribute sets are handled by the retriaval module.
- * Extended Explain conversion / schema.
- * Modified server and client to work with ASN.1 compiled protocol handlers.
- *
- * Revision 1.11  1998/04/02 08:27:37  adam
- * Minor change in definition of Z_TargetInfo. Furhter work on Explain
- * schema - added AttributeDetails.
- *
- * Revision 1.10  1998/03/31 15:13:20  adam
- * Development towards compiled ASN.1.
- *
- * Revision 1.9  1998/03/05 08:07:58  adam
- * Make data1 to EXPLAIN ignore local tags in root.
- *
- * Revision 1.8  1998/02/11 11:53:35  adam
- * Changed code so that it compiles as C++.
- *
- * Revision 1.7  1997/12/09 16:18:16  adam
- * Work on EXPLAIN schema. First implementation of sub-schema facility
- * in the *.abs files.
- *
- * Revision 1.6  1997/11/24 11:33:56  adam
- * Using function odr_nullval() instead of global ODR_NULLVAL when
- * appropriate.
- *
- * Revision 1.5  1997/11/19 10:30:06  adam
- * More explain work.
- *
- * Revision 1.4  1997/11/18 09:51:08  adam
- * Removed element num_children from data1_node. Minor changes in
- * data1 to Explain.
- *
- * Revision 1.3  1997/09/17 12:10:36  adam
- * YAZ version 1.4.
- *
- * Revision 1.2  1995/12/14 16:28:30  quinn
- * More explain stuff.
- *
- * Revision 1.1  1995/12/14  11:09:51  quinn
- * Work on Explain
- *
- *
- */
-
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <yaz/log.h>
-#include <yaz/proto.h>
-#include <yaz/data1.h>
-
-typedef struct {
-    data1_handle dh;
-    ODR o;
-    int select;
-
-    bool_t *false_value;
-    bool_t *true_value;
-} ExpHandle;
-
-static int is_numeric_tag (ExpHandle *eh, data1_node *c)
-{
-    if (!c || c->which != DATA1N_tag)
-       return 0;
-    if (!c->u.tag.element)
-    {
-       yaz_log(LOG_WARN, "Tag %s is local", c->u.tag.tag);
-       return 0;
-    }
-    if (c->u.tag.element->tag->which != DATA1T_numeric)
-    {
-       yaz_log(LOG_WARN, "Tag %s is not numeric", c->u.tag.tag);
-       return 0;
-    }
-    if (eh->select && !c->u.tag.node_selected)
-       return 0;
-    return c->u.tag.element->tag->value.numeric;
-}
-
-static int is_data_tag (ExpHandle *eh, data1_node *c)
-{
-    if (!c || c->which != DATA1N_data)
-       return 0;
-    if (eh->select && !c->u.tag.node_selected)
-       return 0;
-    return 1;
-}
-
-static int *f_integer(ExpHandle *eh, data1_node *c)
-{
-    int *r;
-    char intbuf[64];
-
-    c = c->child;
-    if (!is_data_tag (eh, c) || c->u.data.len > 63)
-       return 0;
-    r = (int *)odr_malloc(eh->o, sizeof(*r));
-    sprintf(intbuf, "%.*s", c->u.data.len, c->u.data.data);
-    *r = atoi(intbuf);
-    return r;
-}
-
-static char *f_string(ExpHandle *eh, data1_node *c)
-{
-    char *r;
-
-    c = c->child;
-    if (!is_data_tag (eh, c))
-       return 0;
-    r = (char *)odr_malloc(eh->o, c->u.data.len+1);
-    memcpy(r, c->u.data.data, c->u.data.len);
-    r[c->u.data.len] = '\0';
-    return r;
-}
-
-static bool_t *f_bool(ExpHandle *eh, data1_node *c)
-{
-    bool_t *tf;
-    char intbuf[64];
-
-    c = c->child;
-    if (!is_data_tag (eh, c) || c->u.data.len > 63)
-       return 0;
-    tf = (int *)odr_malloc (eh->o, sizeof(*tf));
-    sprintf(intbuf, "%.*s", c->u.data.len, c->u.data.data);
-    *tf = atoi(intbuf);
-    return tf;
-}
-
-static Odr_oid *f_oid(ExpHandle *eh, data1_node *c, oid_class oclass)
-{
-    char oidstr[64];
-    int oid_this[20];
-    oid_value value_for_this;
-
-    c = c->child;
-    if (!is_data_tag (eh, c) || c->u.data.len > 63)
-       return 0;
-    sprintf(oidstr, "%.*s", c->u.data.len, c->u.data.data);
-    value_for_this = oid_getvalbyname(oidstr);
-    if (value_for_this == VAL_NONE)
-    {
-       Odr_oid *oid = odr_getoidbystr(eh->o, oidstr);
-       assert (oid);
-       return oid;
-    }
-    else
-    {
-       struct oident ident;
-
-       ident.oclass = oclass;
-       ident.proto = PROTO_Z3950;
-       ident.value = value_for_this;
-       
-       oid_ent_to_oid (&ident, oid_this);
-    }
-    return odr_oiddup (eh->o, oid_this);
-}
-
-static Z_IntUnit *f_intunit(ExpHandle *eh, data1_node *c)
-{
-    /* fix */
-    return 0;
-}
-
-static Z_HumanString *f_humstring(ExpHandle *eh, data1_node *c)
-{
-    Z_HumanString *r;
-    Z_HumanStringUnit *u;
-
-    c = c->child;
-    if (!is_data_tag (eh, c))
-       return 0;
-    r = (Z_HumanString *)odr_malloc(eh->o, sizeof(*r));
-    r->num_strings = 1;
-    r->strings = (Z_HumanStringUnit **)odr_malloc(eh->o, sizeof(Z_HumanStringUnit*));
-    r->strings[0] = u = (Z_HumanStringUnit *)odr_malloc(eh->o, sizeof(*u));
-    u->language = 0;
-    u->text = (char *)odr_malloc(eh->o, c->u.data.len+1);
-    memcpy(u->text, c->u.data.data, c->u.data.len);
-    u->text[c->u.data.len] = '\0';
-    return r;
-}
-
-static Z_CommonInfo *f_commonInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_CommonInfo *res = (Z_CommonInfo *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->dateAdded = 0;
-    res->dateChanged = 0;
-    res->expiry = 0;
-    res->humanStringLanguage = 0;
-    res->otherInfo = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-           case 601: res->dateAdded = f_string(eh, c); break;
-           case 602: res->dateChanged = f_string(eh, c); break;
-           case 603: res->expiry = f_string(eh, c); break;
-           case 604: res->humanStringLanguage = f_string(eh, c); break;
-       }
-    }
-    return res;
-}
-
-Odr_oid **f_oid_seq (ExpHandle *eh, data1_node *n, int *num, oid_class oclass)
-{
-    Odr_oid **res;
-    data1_node *c;
-    int i;
-
-    *num = 0;
-    for (c = n->child ; c; c = c->next)
-       if (is_numeric_tag (eh, c) == 1000)
-           ++(*num);
-    if (!*num)
-       return NULL;
-    res = (int **)odr_malloc (eh->o, sizeof(*res) * (*num));
-    for (c = n->child, i = 0 ; c; c = c->next)
-       if (is_numeric_tag (eh, c) == 1000)
-           res[i++] = f_oid (eh, c, oclass);
-    return res;
-}
-    
-char **f_string_seq (ExpHandle *eh, data1_node *n, int *num)
-{
-    char **res;
-    data1_node *c;
-    int i;
-
-    *num = 0;
-    for (c = n->child ; c; c = c->next)
-    {
-       if (is_numeric_tag (eh, c) != 1001)
-           continue;
-       ++(*num);
-    }
-    if (!*num)
-       return NULL;
-    res = (char **)odr_malloc (eh->o, sizeof(*res) * (*num));
-    for (c = n->child, i = 0 ; c; c = c->next)
-    {
-       if (is_numeric_tag (eh, c) != 1001)
-           continue;
-       res[i++] = f_string (eh, c);
-    }
-    return res;
-}
-
-Z_ProximitySupport *f_proximitySupport (ExpHandle *eh, data1_node *n)
-{
-    Z_ProximitySupport *res = (Z_ProximitySupport *)
-       odr_malloc (eh->o, sizeof(*res));
-    res->anySupport = eh->false_value;
-    res->num_unitsSupported = 0;
-    res->unitsSupported = 0;
-    return res;
-}
-
-Z_RpnCapabilities *f_rpnCapabilities (ExpHandle *eh, data1_node *n)
-{
-    Z_RpnCapabilities *res = (Z_RpnCapabilities *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->num_operators = 0;
-    res->operators = NULL;
-    res->resultSetAsOperandSupported = eh->false_value;
-    res->restrictionOperandSupported = eh->false_value;
-    res->proximity = NULL;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag(eh, c))
-       {
-       case 550:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 551)
-                   continue;
-               (res->num_operators)++;
-           }
-           if (res->num_operators)
-               res->operators = (int **)
-                   odr_malloc (eh->o, res->num_operators
-                               * sizeof(*res->operators));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 551)
-                   continue;
-               res->operators[i++] = f_integer (eh, n);
-           }
-           break;
-       case 552:
-           res->resultSetAsOperandSupported = f_bool (eh, c);
-           break;
-       case 553:
-           res->restrictionOperandSupported = f_bool (eh, c);
-           break;
-       case 554:
-           res->proximity = f_proximitySupport (eh, c);
-           break;
-       }
-    }
-    return res;
-}
-
-Z_QueryTypeDetails *f_queryTypeDetails (ExpHandle *eh, data1_node *n)
-{
-    Z_QueryTypeDetails *res = (Z_QueryTypeDetails *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->which = Z_QueryTypeDetails_rpn;
-    res->u.rpn = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag(eh, c))
-       {
-       case 519:
-           res->which = Z_QueryTypeDetails_rpn;
-           res->u.rpn = f_rpnCapabilities (eh, c);
-           break;
-       case 520:
-           break;
-       case 521:
-           break;
-       }
-    }
-    return res;
-}
-
-static Z_AccessInfo *f_accessInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_AccessInfo *res = (Z_AccessInfo *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->num_queryTypesSupported = 0;
-    res->queryTypesSupported = 0;
-    res->num_diagnosticsSets = 0;
-    res->diagnosticsSets = 0;
-    res->num_attributeSetIds = 0;
-    res->attributeSetIds = 0;
-    res->num_schemas = 0;
-    res->schemas = 0;
-    res->num_recordSyntaxes = 0;
-    res->recordSyntaxes = 0;
-    res->num_resourceChallenges = 0;
-    res->resourceChallenges = 0;
-    res->restrictedAccess = 0;
-    res->costInfo = 0;
-    res->num_variantSets = 0;
-    res->variantSets = 0;
-    res->num_elementSetNames = 0;
-    res->elementSetNames = 0;
-    res->num_unitSystems = 0;
-    res->unitSystems = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 501:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 518)
-                   continue;
-               (res->num_queryTypesSupported)++;
-           }
-           if (res->num_queryTypesSupported)
-               res->queryTypesSupported =
-                   (Z_QueryTypeDetails **)
-                   odr_malloc (eh->o, res->num_queryTypesSupported
-                               * sizeof(*res->queryTypesSupported));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 518)
-                   continue;
-               res->queryTypesSupported[i++] = f_queryTypeDetails (eh, n);
-           }
-           break;
-       case 503:
-           res->diagnosticsSets =
-               f_oid_seq(eh, c, &res->num_diagnosticsSets, CLASS_DIAGSET);
-           break;
-       case 505:
-           res->attributeSetIds =
-               f_oid_seq(eh, c, &res->num_attributeSetIds, CLASS_ATTSET);
-           break;
-       case 507:
-           res->schemas =
-               f_oid_seq(eh, c, &res->num_schemas, CLASS_SCHEMA);
-           break;
-       case 509:
-           res->recordSyntaxes =
-               f_oid_seq (eh, c, &res->num_recordSyntaxes, CLASS_RECSYN);
-           break;
-       case 511:
-           res->resourceChallenges =
-               f_oid_seq (eh, c, &res->num_resourceChallenges, CLASS_RESFORM);
-           break;
-       case 513: res->restrictedAccess = NULL; break; /* fix */
-       case 514: res->costInfo = NULL; break; /* fix */
-       case 515:
-           res->variantSets =
-               f_oid_seq (eh, c, &res->num_variantSets, CLASS_VARSET);
-           break;
-       case 516:
-           res->elementSetNames =
-               f_string_seq (eh, c, &res->num_elementSetNames);
-           break;
-       case 517:
-           res->unitSystems = f_string_seq (eh, c, &res->num_unitSystems);
-           break;
-       }
-    }
-    return res;
-}
-
-static int *f_recordCount(ExpHandle *eh, data1_node *c, int *which)
-{
-    int *r= (int *)odr_malloc(eh->o, sizeof(*r));
-    int *wp = which;
-    char intbuf[64];
-
-    c = c->child;
-    if (!is_numeric_tag (eh, c))
-       return 0;
-    if (c->u.tag.element->tag->value.numeric == 210)
-       *wp = Z_DatabaseInfo_actualNumber;
-    else if (c->u.tag.element->tag->value.numeric == 211)
-       *wp = Z_DatabaseInfo_approxNumber;
-    else
-       return 0;
-    if (!c->child || c->child->which != DATA1N_data)
-       return 0;
-    sprintf(intbuf, "%.*s", c->child->u.data.len, c->child->u.data.data);
-    *r = atoi(intbuf);
-    return r;
-}
-
-static Z_ContactInfo *f_contactInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_ContactInfo *res = (Z_ContactInfo *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    
-    res->name = 0;
-    res->description = 0;
-    res->address = 0;
-    res->email = 0;
-    res->phone = 0;
-    
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 102: res->name = f_string (eh, c); break;
-       case 113: res->description = f_humstring (eh, c); break;
-       case 127: res->address = f_humstring (eh, c); break;
-       case 128: res->email = f_string (eh, c); break;
-       case 129: res->phone = f_string (eh, c); break;
-       }
-    }
-    return res;
-}
-
-static Z_DatabaseList *f_databaseList(ExpHandle *eh, data1_node *n)
-{
-    data1_node *c;
-    Z_DatabaseList *res;
-    int i = 0;
-    
-    for (c = n->child; c; c = c->next)
-    {
-       if (!is_numeric_tag (eh, c) != 102) 
-           continue;
-       ++i;
-    }
-    if (!i)
-       return NULL;
-
-    res = (Z_DatabaseList *)odr_malloc (eh->o, sizeof(*res));
-    
-    res->num_databases = i;
-    res->databases = (char **)odr_malloc (eh->o, sizeof(*res->databases) * i);
-    i = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       if (!is_numeric_tag (eh, c) != 102)
-           continue;
-       res->databases[i++] = f_string (eh, c);
-    }
-    return res;
-}
-
-static Z_NetworkAddressIA *f_networkAddressIA(ExpHandle *eh, data1_node *n)
-{
-    Z_NetworkAddressIA *res = (Z_NetworkAddressIA *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    
-    res->hostAddress = 0;
-    res->port = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 121: res->hostAddress = f_string (eh, c); break;
-       case 122: res->port = f_integer (eh, c); break;
-       }
-    }
-    return res;
-}
-
-static Z_NetworkAddressOther *f_networkAddressOther(ExpHandle *eh,
-                                                   data1_node *n)
-{
-    Z_NetworkAddressOther *res = (Z_NetworkAddressOther *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->type = 0;
-    res->address = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 124: res->type = f_string (eh, c); break;
-       case 121: res->address = f_string (eh, c); break;
-       }
-    }
-    return res;
-}
-
-static Z_NetworkAddress **f_networkAddresses(ExpHandle *eh, data1_node *n, 
-                                            int *num)
-{
-    Z_NetworkAddress **res = NULL;
-    data1_node *c;
-    int i = 0;
-    
-    *num = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 120:
-       case 123:
-           (*num)++;
-           break;
-       }
-    }
-
-    if (*num)
-       res = (Z_NetworkAddress **) odr_malloc (eh->o, sizeof(*res) * (*num));
-                                              
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 120:
-           res[i] = (Z_NetworkAddress *) odr_malloc (eh->o, sizeof(**res));
-           res[i]->which = Z_NetworkAddress_iA;
-           res[i]->u.internetAddress = f_networkAddressIA(eh, c);
-           i++;
-           break;
-       case 123:
-           res[i] = (Z_NetworkAddress *) odr_malloc (eh->o, sizeof(**res));
-           res[i]->which = Z_NetworkAddress_other;
-           res[i]->u.other = f_networkAddressOther(eh, c);
-           i++;
-           break;
-       }
-    }
-    return res;
-}
-
-static Z_CategoryInfo *f_categoryInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_CategoryInfo *res = (Z_CategoryInfo *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->category = 0;
-    res->originalCategory = 0;
-    res->description = 0;
-    res->asn1Module = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 102: res->category = f_string(eh, c); break;
-       case 302: res->originalCategory = f_string(eh, c); break;
-       case 113: res->description = f_humstring(eh, c); break;
-       case 303: res->asn1Module = f_string (eh, c); break;
-       }
-    }
-    return res;
-}
-
-static Z_CategoryList *f_categoryList(ExpHandle *eh, data1_node *n)
-{
-    Z_CategoryList *res = (Z_CategoryList *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->commonInfo = 0;
-    res->num_categories = 0;
-    res->categories = NULL;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-
-       switch (is_numeric_tag (eh, c))
-       {
-       case 600: res->commonInfo = f_commonInfo(eh, c); break;
-       case 300:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 301)
-                   continue;
-               (res->num_categories)++;
-           }
-           if (res->num_categories)
-               res->categories =
-                   (Z_CategoryInfo **)odr_malloc (eh->o, res->num_categories 
-                                                  * sizeof(*res->categories));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 301)
-                   continue;
-               res->categories[i++] = f_categoryInfo (eh, n);
-           }
-           break;
-       }
-    }
-    assert (res->num_categories && res->categories);
-    return res;
-}
-
-static Z_TargetInfo *f_targetInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_TargetInfo *res = (Z_TargetInfo *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->commonInfo = 0;
-    res->name = 0;
-    res->recentNews = 0;
-    res->icon = 0;
-    res->namedResultSets = 0;
-    res->multipleDBsearch = 0;
-    res->maxResultSets = 0;
-    res->maxResultSize = 0;
-    res->maxTerms = 0;
-    res->timeoutInterval = 0;
-    res->welcomeMessage = 0;
-    res->contactInfo = 0;
-    res->description = 0;
-    res->num_nicknames = 0;
-    res->nicknames = 0;
-    res->usageRest = 0;
-    res->paymentAddr = 0;
-    res->hours = 0;
-    res->num_dbCombinations = 0;
-    res->dbCombinations = 0;
-    res->num_addresses = 0;
-    res->addresses = 0;
-    res->num_languages = 0;
-    res->languages = NULL;
-    res->commonAccessInfo = 0;
-    
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-
-       switch (is_numeric_tag (eh, c))
-       {
-       case 600: res->commonInfo = f_commonInfo(eh, c); break;
-       case 102: res->name = f_string(eh, c); break;
-       case 103: res->recentNews = f_humstring(eh, c); break;
-       case 104: res->icon = NULL; break; /* fix */
-       case 105: res->namedResultSets = f_bool(eh, c); break;
-       case 106: res->multipleDBsearch = f_bool(eh, c); break;
-       case 107: res->maxResultSets = f_integer(eh, c); break;
-       case 108: res->maxResultSize = f_integer(eh, c); break;
-       case 109: res->maxTerms = f_integer(eh, c); break;
-       case 110: res->timeoutInterval = f_intunit(eh, c); break;
-       case 111: res->welcomeMessage = f_humstring(eh, c); break;
-       case 112: res->contactInfo = f_contactInfo(eh, c); break;
-       case 113: res->description = f_humstring(eh, c); break;
-       case 114: 
-           res->num_nicknames = 0;
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 102)
-                   continue;
-               (res->num_nicknames)++;
-           }
-           if (res->num_nicknames)
-               res->nicknames =
-                   (char **)odr_malloc (eh->o, res->num_nicknames 
-                               * sizeof(*res->nicknames));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 102)
-                   continue;
-               res->nicknames[i++] = f_string (eh, n);
-           }
-           break;
-       case 115: res->usageRest = f_humstring(eh, c); break;
-       case 116: res->paymentAddr = f_humstring(eh, c); break;
-       case 117: res->hours = f_humstring(eh, c); break;
-       case 118:
-           res->num_dbCombinations = 0;
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 605)
-                   continue;
-               (res->num_dbCombinations)++;
-           }
-           if (res->num_dbCombinations)
-               res->dbCombinations =
-                   (Z_DatabaseList **)odr_malloc (eh->o, res->num_dbCombinations
-                               * sizeof(*res->dbCombinations));
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 605)
-                   continue;
-               res->dbCombinations[i++] = f_databaseList (eh, n);
-           }
-           break;
-       case 119: 
-           res->addresses =
-               f_networkAddresses (eh, c, &res->num_addresses);
-           break;
-       case 125:
-           res->num_languages = 0;
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 126)
-                   continue;
-               (res->num_languages)++;
-           }
-           if (res->num_languages)
-               res->languages = (char **)
-                   odr_malloc (eh->o, res->num_languages *
-                               sizeof(*res->languages));
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 126)
-                   continue;
-               res->languages[i++] = f_string (eh, n);
-           }
-           break;
-       case 500: res->commonAccessInfo = f_accessInfo(eh, c); break;
-       }
-    }
-    if (!res->namedResultSets)
-       res->namedResultSets = eh->false_value;
-    if (!res->multipleDBsearch)
-       res->multipleDBsearch = eh->false_value;
-    return res;
-}
-
-static Z_DatabaseInfo *f_databaseInfo(ExpHandle *eh, data1_node *n)
-{
-    Z_DatabaseInfo *res = (Z_DatabaseInfo *)odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->commonInfo = 0;
-    res->name = 0;
-    res->explainDatabase = 0;
-    res->num_nicknames = 0;
-    res->nicknames = 0;
-    res->icon = 0;
-    res->userFee = 0;
-    res->available = 0;
-    res->titleString = 0;
-    res->num_keywords = 0;
-    res->keywords = 0;
-    res->description = 0;
-    res->associatedDbs = 0;
-    res->subDbs = 0;
-    res->disclaimers = 0;
-    res->news = 0;
-    res->u.actualNumber = 0;
-    res->defaultOrder = 0;
-    res->avRecordSize = 0;
-    res->maxRecordSize = 0;
-    res->hours = 0;
-    res->bestTime = 0;
-    res->lastUpdate = 0;
-    res->updateInterval = 0;
-    res->coverage = 0;
-    res->proprietary = 0;
-    res->copyrightText = 0;
-    res->copyrightNotice = 0;
-    res->producerContactInfo = 0;
-    res->supplierContactInfo = 0;
-    res->submissionContactInfo = 0;
-    res->accessInfo = 0;
-    
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-
-       switch (is_numeric_tag (eh, c))
-       {
-       case 600: res->commonInfo = f_commonInfo(eh, c); break;
-       case 102: res->name = f_string(eh, c); break;
-       case 226: res->explainDatabase = odr_nullval(); break;
-       case 114:
-           res->num_nicknames = 0;
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) ||
-                   n->u.tag.element->tag->value.numeric != 102)
-                   continue;
-               (res->num_nicknames)++;
-           }
-           if (res->num_nicknames)
-               res->nicknames =
-                   (char **)odr_malloc (eh->o, res->num_nicknames 
-                               * sizeof(*res->nicknames));
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) ||
-                   n->u.tag.element->tag->value.numeric != 102)
-                   continue;
-               res->nicknames[i++] = f_string (eh, n);
-           }
-           break;
-       case 104: res->icon = 0; break;      /* fix */
-       case 201: res->userFee = f_bool(eh, c); break;
-       case 202: res->available = f_bool(eh, c); break;
-       case 203: res->titleString = f_humstring(eh, c); break;
-       case 227:
-           res->num_keywords = 0;
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 1000)
-                   continue;
-               (res->num_keywords)++;
-           }
-           if (res->num_keywords)
-               res->keywords =
-                   (Z_HumanString **)odr_malloc (eh->o, res->num_keywords 
-                               * sizeof(*res->keywords));
-           for (n = c->child; n; n = n->next)
-           {
-               if (!is_numeric_tag(eh, n) != 1000)
-                   continue;
-               res->keywords[i++] = f_humstring (eh, n);
-           }
-           break;
-       case 113: res->description = f_humstring(eh, c); break;
-       case 205:
-           res->associatedDbs = f_databaseList (eh, c);
-           break;
-       case 206:
-           res->subDbs = f_databaseList (eh, c);
-           break;
-       case 207: res->disclaimers = f_humstring(eh, c); break;
-       case 103: res->news = f_humstring(eh, c); break;
-       case 209: res->u.actualNumber =
-                     f_recordCount(eh, c, &res->which); break;
-       case 212: res->defaultOrder = f_humstring(eh, c); break;
-       case 213: res->avRecordSize = f_integer(eh, c); break;
-       case 214: res->maxRecordSize = f_integer(eh, c); break;
-       case 215: res->hours = f_humstring(eh, c); break;
-       case 216: res->bestTime = f_humstring(eh, c); break;
-       case 217: res->lastUpdate = f_string(eh, c); break;
-       case 218: res->updateInterval = f_intunit(eh, c); break;
-       case 219: res->coverage = f_humstring(eh, c); break;
-       case 220: res->proprietary = f_bool(eh, c); break;
-       case 221: res->copyrightText = f_humstring(eh, c); break;
-       case 222: res->copyrightNotice = f_humstring(eh, c); break;
-       case 223: res->producerContactInfo = f_contactInfo(eh, c); break;
-       case 224: res->supplierContactInfo = f_contactInfo(eh, c); break;
-       case 225: res->submissionContactInfo = f_contactInfo(eh, c); break;
-       case 500: res->accessInfo = f_accessInfo(eh, c); break;
-       }
-    }
-    if (!res->userFee)
-       res->userFee = eh->false_value;
-    if (!res->available)
-       res->available = eh->true_value;
-    return res;
-}
-
-Z_StringOrNumeric *f_stringOrNumeric (ExpHandle *eh, data1_node *n)
-{
-    Z_StringOrNumeric *res = (Z_StringOrNumeric *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 1001:
-           res->which = Z_StringOrNumeric_string;
-           res->u.string = f_string (eh, c);
-           break;
-       case 1002:
-           res->which = Z_StringOrNumeric_numeric;
-           res->u.numeric = f_integer (eh, c);
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeDescription *f_attributeDescription (
-    ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeDescription *res = (Z_AttributeDescription *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-    int i = 0;
-       
-    res->name = 0;
-    res->description = 0;
-    res->attributeValue = 0;
-    res->num_equivalentAttributes = 0;
-    res->equivalentAttributes = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 102: res->name = f_string (eh, c); break;
-       case 113: res->description = f_humstring (eh, c); break;
-       case 710: res->attributeValue = f_stringOrNumeric (eh, c); break;
-       case 752: (res->num_equivalentAttributes++); break;
-       }
-    }
-    if (res->num_equivalentAttributes)
-       res->equivalentAttributes = (Z_StringOrNumeric **)
-           odr_malloc (eh->o, sizeof(*res->equivalentAttributes) *
-                       res->num_equivalentAttributes);
-    for (c = n->child; c; c = c->next)
-       if (is_numeric_tag (eh, c) == 752)
-           res->equivalentAttributes[i++] = f_stringOrNumeric (eh, c);
-    return res;
-}
-
-Z_AttributeType *f_attributeType (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeType *res = (Z_AttributeType *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->name = 0;
-    res->description = 0;
-    res->attributeType = 0;
-    res->num_attributeValues = 0;
-    res->attributeValues = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 102: res->name = f_string (eh, c); break;
-       case 113: res->description = f_humstring (eh, c); break;
-       case 704: res->attributeType = f_integer (eh, c); break;
-       case 708:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 709)
-                   continue;
-               (res->num_attributeValues)++;
-           }
-           if (res->num_attributeValues)
-               res->attributeValues = (Z_AttributeDescription **)
-                   odr_malloc (eh->o, res->num_attributeValues
-                               * sizeof(*res->attributeValues));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 709)
-                   continue;
-               res->attributeValues[i++] = f_attributeDescription (eh, n);
-           }
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeSetInfo *f_attributeSetInfo (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeSetInfo *res = (Z_AttributeSetInfo *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->commonInfo = 0;
-    res->attributeSet = 0;
-    res->name = 0;
-    res->num_attributes = 0;
-    res->attributes = 0;
-    res->description = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 600: res->commonInfo = f_commonInfo (eh, c); break;
-       case 1000: res->attributeSet = f_oid (eh, c, CLASS_ATTSET); break;
-       case 102: res->name = f_string (eh, c); break;
-       case 750:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 751)
-                   continue;
-               (res->num_attributes)++;
-           }
-           if (res->num_attributes)
-               res->attributes = (Z_AttributeType **)
-                   odr_malloc (eh->o, res->num_attributes
-                               * sizeof(*res->attributes));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 751)
-                   continue;
-               res->attributes[i++] = f_attributeType (eh, n);
-           }
-           break;
-       case 113: res->description = f_humstring (eh, c); break;
-       }
-    }
-    return res;
-}
-
-Z_OmittedAttributeInterpretation *f_omittedAttributeInterpretation (
-    ExpHandle *eh, data1_node *n)
-{
-    Z_OmittedAttributeInterpretation *res = (Z_OmittedAttributeInterpretation*)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->defaultValue = 0;
-    res->defaultDescription = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 706:
-           res->defaultValue = f_stringOrNumeric (eh, c);
-           break;
-       case 113:
-           res->defaultDescription = f_humstring(eh, c);
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeValue *f_attributeValue (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeValue *res = (Z_AttributeValue *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->value = 0;
-    res->description = 0;
-    res->num_subAttributes = 0;
-    res->subAttributes = 0;
-    res->num_superAttributes = 0;
-    res->superAttributes = 0;
-    res->partialSupport = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 710:
-           res->value = f_stringOrNumeric (eh, c);  break;
-       case 113:
-           res->description = f_humstring (eh, c); break;
-       case 712:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 713)
-                   continue;
-               (res->num_subAttributes)++;
-           }
-           if (res->num_subAttributes)
-               res->subAttributes =
-                   (Z_StringOrNumeric **)
-                   odr_malloc (eh->o, res->num_subAttributes
-                               * sizeof(*res->subAttributes));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 713)
-                   continue;
-               res->subAttributes[i++] = f_stringOrNumeric (eh, n);
-           }
-           break;
-       case 714:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 715)
-                   continue;
-               (res->num_superAttributes)++;
-           }
-           if (res->num_superAttributes)
-               res->superAttributes =
-                   (Z_StringOrNumeric **)
-                   odr_malloc (eh->o, res->num_superAttributes
-                               * sizeof(*res->superAttributes));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 715)
-                   continue;
-               res->superAttributes[i++] = f_stringOrNumeric (eh, n);
-           }
-           break;
-       case 711:
-           res->partialSupport = odr_nullval ();
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeTypeDetails *f_attributeTypeDetails (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeTypeDetails *res = (Z_AttributeTypeDetails *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-    res->attributeType = 0;
-    res->defaultIfOmitted = 0;
-    res->num_attributeValues = 0;
-    res->attributeValues = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 704: res->attributeType = f_integer (eh, c); break;
-       case 705:
-           res->defaultIfOmitted = f_omittedAttributeInterpretation (eh, c);
-           break;
-       case 708:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 709)
-                   continue;
-               (res->num_attributeValues)++;
-           }
-           if (res->num_attributeValues)
-               res->attributeValues =
-                   (Z_AttributeValue **)
-                   odr_malloc (eh->o, res->num_attributeValues
-                               * sizeof(*res->attributeValues));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 709)
-                   continue;
-               res->attributeValues[i++] = f_attributeValue (eh, n);
-           }
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeSetDetails *f_attributeSetDetails (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeSetDetails *res = (Z_AttributeSetDetails *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-    
-    res->attributeSet = 0;
-    res->num_attributesByType = 0;
-    res->attributesByType = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 1000: res->attributeSet = f_oid(eh, c, CLASS_ATTSET); break;
-       case 702:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 703)
-                   continue;
-               (res->num_attributesByType)++;
-           }
-           if (res->num_attributesByType)
-               res->attributesByType =
-                   (Z_AttributeTypeDetails **)
-                   odr_malloc (eh->o, res->num_attributesByType
-                               * sizeof(*res->attributesByType));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 703)
-                   continue;
-               res->attributesByType[i++] = f_attributeTypeDetails (eh, n);
-           }
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeValueList *f_attributeValueList (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeValueList *res = (Z_AttributeValueList *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    int i = 0;
-
-    res->num_attributes = 0;
-    res->attributes = 0;
-    for (c = n->child; c; c = c->next)
-       if (is_numeric_tag (eh, c) == 710)
-           (res->num_attributes)++;
-    if (res->num_attributes)
-    {
-       res->attributes = (Z_StringOrNumeric **)
-           odr_malloc (eh->o, res->num_attributes * sizeof(*res->attributes));
-    }
-    for (c = n->child; c; c = c->next)
-       if (is_numeric_tag(eh, c) == 710)
-           res->attributes[i++] = f_stringOrNumeric (eh, c);
-    return res;
-}
-
-Z_AttributeOccurrence *f_attributeOccurrence (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeOccurrence *res = (Z_AttributeOccurrence *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->attributeSet = 0;
-    res->attributeType = 0;
-    res->mustBeSupplied = 0;
-    res->which = Z_AttributeOcc_any_or_none;
-    res->attributeValues.any_or_none = odr_nullval ();
-
-    for (c = n->child; c; c = c->next)
-    {
-       switch (is_numeric_tag (eh, c))
-       {
-       case 1000:
-           res->attributeSet = f_oid (eh, c, CLASS_ATTSET); break;
-       case 704:
-           res->attributeType = f_integer (eh, c); break;
-       case 720:
-           res->mustBeSupplied = odr_nullval (); break;
-       case 721:
-           res->which = Z_AttributeOcc_any_or_none;
-           res->attributeValues.any_or_none = odr_nullval ();
-           break;
-       case 722:
-           res->which = Z_AttributeOcc_specific;
-           res->attributeValues.specific = f_attributeValueList (eh, c);
-           break;
-       }
-    }
-    return res;
-}
-
-Z_AttributeCombination *f_attributeCombination (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeCombination *res = (Z_AttributeCombination *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    int i = 0;
-
-    res->num_occurrences = 0;
-    res->occurrences = 0;
-    for (c = n->child; c; c = c->next)
-       if (is_numeric_tag (eh, c) == 719)
-           (res->num_occurrences)++;
-    if (res->num_occurrences)
-    {
-       res->occurrences = (Z_AttributeOccurrence **)
-           odr_malloc (eh->o, res->num_occurrences * sizeof(*res->occurrences));
-    }
-    for (c = n->child; c; c = c->next)
-       if (is_numeric_tag(eh, c) == 719)
-           res->occurrences[i++] = f_attributeOccurrence (eh, c);
-    assert (res->num_occurrences);
-    return res;
-}
-
-Z_AttributeCombinations *f_attributeCombinations (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeCombinations *res = (Z_AttributeCombinations *)
-       odr_malloc (eh->o, sizeof(*res));
-    data1_node *c;
-    res->defaultAttributeSet = 0;
-    res->num_legalCombinations = 0;
-    res->legalCombinations = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 1000:
-           res->defaultAttributeSet = f_oid (eh, c, CLASS_ATTSET);
-           break;
-       case 717:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 718)
-                   continue;
-               (res->num_legalCombinations)++;
-           }
-           if (res->num_legalCombinations)
-               res->legalCombinations =
-                   (Z_AttributeCombination **)
-                   odr_malloc (eh->o, res->num_legalCombinations
-                               * sizeof(*res->legalCombinations));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 718)
-                   continue;
-               res->legalCombinations[i++] = f_attributeCombination (eh, n);
-           }
-           break;
-       }
-    }
-    assert (res->num_legalCombinations);
-    return res;
-}
-
-Z_AttributeDetails *f_attributeDetails (ExpHandle *eh, data1_node *n)
-{
-    Z_AttributeDetails *res = (Z_AttributeDetails *)
-       odr_malloc(eh->o, sizeof(*res));
-    data1_node *c;
-
-    res->commonInfo = 0;
-    res->databaseName = 0;
-    res->num_attributesBySet = 0;
-    res->attributesBySet = NULL;
-    res->attributeCombinations = NULL;
-
-    for (c = n->child; c; c = c->next)
-    {
-       int i = 0;
-       switch (is_numeric_tag (eh, c))
-       {
-       case 600: res->commonInfo = f_commonInfo(eh, c); break;
-       case 102: res->databaseName = f_string (eh, c); break;
-       case 700:
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 701)
-                   continue;
-               (res->num_attributesBySet)++;
-           }
-           if (res->num_attributesBySet)
-               res->attributesBySet =
-                   (Z_AttributeSetDetails **)
-                   odr_malloc (eh->o, res->num_attributesBySet
-                               * sizeof(*res->attributesBySet));
-           for (n = c->child; n; n = n->next)
-           {
-               if (is_numeric_tag(eh, n) != 701)
-                   continue;
-               res->attributesBySet[i++] = f_attributeSetDetails (eh, n);
-           }
-           break;
-       case 716:
-           res->attributeCombinations = f_attributeCombinations (eh, c);
-           break;
-       }
-    }
-    return res;
-}
-
-Z_ExplainRecord *data1_nodetoexplain (data1_handle dh, data1_node *n,
-                                     int select, ODR o)
-{
-    ExpHandle eh;
-    Z_ExplainRecord *res = (Z_ExplainRecord *)odr_malloc(o, sizeof(*res));
-
-    eh.dh = dh;
-    eh.select = select;
-    eh.o = o;
-    eh.false_value = (int *)odr_malloc(eh.o, sizeof(eh.false_value));
-    *eh.false_value = 0;
-    eh.true_value = (int *)odr_malloc(eh.o, sizeof(eh.true_value));
-    *eh.true_value = 1;
-
-    assert(n->which == DATA1N_root);
-    if (strcmp(n->u.root.type, "explain"))
-    {
-       yaz_log(LOG_WARN, "Attempt to convert a non-Explain record");
-       return 0;
-    }
-    for (n = n->child; n; n = n->next)
-    {
-       switch (is_numeric_tag (&eh, n))
-       {
-       case 1:
-           res->which = Z_Explain_categoryList;
-           if (!(res->u.categoryList = f_categoryList(&eh, n)))
-               return 0;
-           return res;     
-       case 2:
-           res->which = Z_Explain_targetInfo;
-           if (!(res->u.targetInfo = f_targetInfo(&eh, n)))
-               return 0;
-           return res;
-       case 3:
-           res->which = Z_Explain_databaseInfo;
-           if (!(res->u.databaseInfo = f_databaseInfo(&eh, n)))
-               return 0;
-           return res;
-       case 7:
-           res->which = Z_Explain_attributeSetInfo;
-           if (!(res->u.attributeSetInfo = f_attributeSetInfo(&eh, n)))
-               return 0;
-           return res;     
-       case 10:
-           res->which = Z_Explain_attributeDetails;
-           if (!(res->u.attributeDetails = f_attributeDetails(&eh, n)))
-               return 0;
-           return res;
-       }
-    }
-    yaz_log(LOG_WARN, "No category in Explain record");
-    return 0;
-}
diff --git a/retrieval/d1_grs.c b/retrieval/d1_grs.c
deleted file mode 100644 (file)
index 393a77f..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_grs.c,v 1.26 2002-10-08 22:18:22 adam Exp $
- *
- */
-
-#include <assert.h>
-#include <stdlib.h>
-
-#include <yaz/proto.h>
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-#define D1_VARIANTARRAY 20 /* fixed max length on sup'd variant-list. Lazy me */
-
-static Z_ElementMetaData *get_ElementMetaData(ODR o)
-{
-    Z_ElementMetaData *r = (Z_ElementMetaData *)odr_malloc(o, sizeof(*r));
-
-    r->seriesOrder = 0;
-    r->usageRight = 0;
-    r->num_hits = 0;
-    r->hits = 0;
-    r->displayName = 0;
-    r->num_supportedVariants = 0;
-    r->supportedVariants = 0;
-    r->message = 0;
-    r->elementDescriptor = 0;
-    r->surrogateFor = 0;
-    r->surrogateElement = 0;
-    r->other = 0;
-
-    return r;
-}
-
-/*
- * N should point to the *last* (leaf) triple in a sequence. Construct a variant
- * from each of the triples beginning (ending) with 'n', up to the
- * nearest parent tag. num should equal the number of triples in the
- * sequence.
- */
-static Z_Variant *make_variant(data1_node *n, int num, ODR o)
-{
-    Z_Variant *v = (Z_Variant *)odr_malloc(o, sizeof(*v));
-    data1_node *p;
-
-    v->globalVariantSetId = 0;
-    v->num_triples = num;
-    v->triples = (Z_Triple **)odr_malloc(o, sizeof(Z_Triple*) * num);
-
-    /*
-     * cycle back up through the tree of variants
-     * (traversing exactly 'level' variants).
-     */
-    for (p = n, num--; p && num >= 0; p = p->parent, num--)
-    {
-       Z_Triple *t;
-
-       assert(p->which == DATA1N_variant);
-       t = v->triples[num] = (Z_Triple *)odr_malloc(o, sizeof(*t));
-       t->variantSetId = 0;
-       t->zclass = (int *)odr_malloc(o, sizeof(int));
-       *t->zclass = p->u.variant.type->zclass->zclass;
-       t->type = (int *)odr_malloc(o, sizeof(int));
-       *t->type = p->u.variant.type->type;
-
-       switch (p->u.variant.type->datatype)
-       {
-           case DATA1K_string:
-               t->which = Z_Triple_internationalString;
-               t->value.internationalString =
-                    odr_strdup(o, p->u.variant.value);
-               break;
-           default:
-               yaz_log(LOG_WARN, "Unable to handle value for variant %s",
-                       p->u.variant.type->name);
-               return 0;
-       }
-    }
-    return v;
-}
-
-/*
- * Traverse the variant children of n, constructing a supportedVariant list.
- */
-static int traverse_triples(data1_node *n, int level, Z_ElementMetaData *m,
-    ODR o)
-{
-    data1_node *c;
-    
-    for (c = n->child; c; c = c->next)
-       if (c->which == DATA1N_data && level)
-       {
-           if (!m->supportedVariants)
-               m->supportedVariants = (Z_Variant **)odr_malloc(o, sizeof(Z_Variant*) *
-                   D1_VARIANTARRAY);
-           else if (m->num_supportedVariants >= D1_VARIANTARRAY)
-           {
-               yaz_log(LOG_WARN, "Too many variants (D1_VARIANTARRAY==%d)",
-                       D1_VARIANTARRAY);
-               return -1;
-           }
-
-           if (!(m->supportedVariants[m->num_supportedVariants++] =
-               make_variant(n, level, o)))
-               return -1;
-       }
-       else if (c->which == DATA1N_variant)
-           if (traverse_triples(c, level+1, m, o) < 0)
-               return -1;
-    return 0;
-}
-
-/*
- * Locate some data under this node. This routine should handle variants
- * prettily.
- */
-static char *get_data(data1_node *n, int *len)
-{
-    char *r;
-    data1_node *np = 0;
-
-    while (n)
-    {
-        if (n->which == DATA1N_data)
-        {
-            int i;
-            *len = n->u.data.len;
-
-            for (i = 0; i<*len; i++)
-                if (!d1_isspace(n->u.data.data[i]))
-                    break;
-            while (*len && d1_isspace(n->u.data.data[*len - 1]))
-                (*len)--;
-            *len = *len - i;
-            if (*len > 0)
-                return n->u.data.data + i;
-        }
-        if (n->which == DATA1N_tag)
-            np = n->child;
-        n = n->next;
-        if (!n)
-        {
-            n = np;
-            np = 0;
-        }
-    }
-    r = "";
-    *len = strlen(r);
-    return r;
-}
-
-static Z_ElementData *nodetoelementdata(data1_handle dh, data1_node *n,
-                                       int select, int leaf,
-                                       ODR o, int *len)
-{
-    Z_ElementData *res = (Z_ElementData *)odr_malloc(o, sizeof(*res));
-
-    if (!n)
-    {
-       res->which = Z_ElementData_elementNotThere;
-       res->u.elementNotThere = odr_nullval();
-    }
-    else if (n->which == DATA1N_data && leaf)
-    {
-       char str[64], *cp;
-       int toget = n->u.data.len;
-
-        cp = get_data (n, &toget);
-
-       switch (n->u.data.what)
-       {
-        case DATA1I_num:
-            res->which = Z_ElementData_numeric;
-            res->u.numeric = (int *)odr_malloc(o, sizeof(int));
-            *res->u.numeric = atoi_n (cp, toget);
-            *len += 4;
-            break;
-        case DATA1I_text:
-        case DATA1I_xmltext:
-            res->which = Z_ElementData_string;
-            res->u.string = (char *)odr_malloc(o, toget+1);
-            if (toget)
-                memcpy(res->u.string, cp, toget);
-            res->u.string[toget] = '\0';
-            *len += toget;
-            break;
-        case DATA1I_oid:
-            res->which = Z_ElementData_oid;
-            if (toget > 63)
-                toget = 63;
-            memcpy (str, cp, toget);
-            str[toget] = '\0';
-            res->u.oid = odr_getoidbystr(o, str);
-            *len += oid_oidlen(res->u.oid) * sizeof(int);
-            break;
-        default:
-            yaz_log(LOG_WARN, "Can't handle datatype.");
-            return 0;
-       }
-    }
-    else
-    {
-       res->which = Z_ElementData_subtree;
-       if (!(res->u.subtree = data1_nodetogr (dh, n->parent, select, o, len)))
-           return 0;
-    }
-    return res;
-}
-
-static int is_empty_data (data1_node *n)
-{
-    if (n && n->which == DATA1N_data && (n->u.data.what == DATA1I_text
-                               || n->u.data.what == DATA1I_xmltext))
-    {
-        int i = n->u.data.len;
-        
-        while (i > 0 && strchr("\n ", n->u.data.data[i-1]))
-            i--;
-        if (i == 0)
-            return 1;
-    }
-    return 0;
-}
-
-
-static Z_TaggedElement *nodetotaggedelement(data1_handle dh, data1_node *n,
-                                           int select, ODR o,
-                                           int *len)
-{
-    Z_TaggedElement *res = (Z_TaggedElement *)odr_malloc(o, sizeof(*res));
-    data1_tag *tag = 0;
-    data1_node *data;
-    int leaf = 0;
-
-    if (n->which == DATA1N_tag)
-    {
-       if (n->u.tag.element)
-           tag = n->u.tag.element->tag;
-       data = n->child;
-
-        /* skip empty data children */
-        while (is_empty_data(data))
-            data = data->next;
-        if (!data)
-            data = n->child;
-        else
-        {   /* got one. see if this is the only non-empty one */
-            data1_node *sub = data->next;
-            while (sub && is_empty_data(sub))
-                sub = sub->next;
-            if (!sub)
-                leaf = 1;  /* all empty. 'data' is the only child */
-        }
-    }
-    /*
-     * If we're a data element at this point, we need to insert a
-     * wellKnown tag to wrap us up.
-     */
-    else if (n->which == DATA1N_data || n->which == DATA1N_variant)
-    {
-       if (n->root->u.root.absyn &&
-            !(tag = data1_gettagbyname (dh, n->root->u.root.absyn->tagset,
-                                       "wellKnown")))
-       {
-           yaz_log(LOG_WARN, "Unable to locate tag for 'wellKnown'");
-           return 0;
-       }
-       data = n;
-       leaf = 1;
-        if (is_empty_data(data))
-            return 0;
-    }
-    else
-    {
-       yaz_log(LOG_WARN, "Bad data.");
-       return 0;
-    }
-
-    res->tagType = (int *)odr_malloc(o, sizeof(int));
-    *res->tagType = (tag && tag->tagset) ? tag->tagset->type : 3;
-    res->tagValue = (Z_StringOrNumeric *)odr_malloc(o, sizeof(Z_StringOrNumeric));
-    if (tag && tag->which == DATA1T_numeric)
-    {
-       res->tagValue->which = Z_StringOrNumeric_numeric;
-       res->tagValue->u.numeric = (int *)odr_malloc(o, sizeof(int));
-       *res->tagValue->u.numeric = tag->value.numeric;
-    }
-    else
-    {
-       char *tagstr;
-
-       if (n->which == DATA1N_tag)      
-           tagstr = n->u.tag.tag;       /* tag at node */
-       else if (tag)                    
-           tagstr = tag->value.string;  /* no take from well-known */
-       else
-            return 0;
-       res->tagValue->which = Z_StringOrNumeric_string;
-       res->tagValue->u.string = odr_strdup(o, tagstr);
-    }
-    res->tagOccurrence = 0;
-    res->appliedVariant = 0;
-    res->metaData = 0;
-    if (n->which == DATA1N_variant || (data && data->which ==
-       DATA1N_variant && data->next == NULL))
-    {
-       int nvars = 0;
-
-       res->metaData = get_ElementMetaData(o);
-       if (n->which == DATA1N_tag && n->u.tag.make_variantlist)
-           if (traverse_triples(data, 0, res->metaData, o) < 0)
-               return 0;
-       while (data && data->which == DATA1N_variant)
-       {
-           nvars++;
-           data = data->child;
-       }
-       if (n->which != DATA1N_tag || !n->u.tag.no_data_requested)
-           res->appliedVariant = make_variant(data->parent, nvars-1, o);
-    }
-    if (n->which == DATA1N_tag && n->u.tag.no_data_requested)
-    {
-       res->content = (Z_ElementData *)odr_malloc(o, sizeof(*res->content));
-       res->content->which = Z_ElementData_noDataRequested;
-       res->content->u.noDataRequested = odr_nullval();
-    }
-    else if (!(res->content = nodetoelementdata (dh, data, select, leaf,
-                                                o, len)))
-       return 0;
-    *len += 10;
-    return res;
-}
-
-Z_GenericRecord *data1_nodetogr(data1_handle dh, data1_node *n,
-                               int select, ODR o, int *len)
-{
-    Z_GenericRecord *res = (Z_GenericRecord *)odr_malloc(o, sizeof(*res));
-    data1_node *c;
-    int num_children = 0;
-
-    if (n->which == DATA1N_root)
-        n = data1_get_root_tag (dh, n);
-        
-    for (c = n->child; c; c = c->next)
-       num_children++;
-
-    res->elements = (Z_TaggedElement **)
-        odr_malloc(o, sizeof(Z_TaggedElement *) * num_children);
-    res->num_elements = 0;
-    for (c = n->child; c; c = c->next)
-    {
-       if (c->which == DATA1N_tag && select && !c->u.tag.node_selected)
-           continue;
-       if ((res->elements[res->num_elements] =
-             nodetotaggedelement (dh, c, select, o, len)))
-           res->num_elements++;
-    }
-    return res;
-}
diff --git a/retrieval/d1_handle.c b/retrieval/d1_handle.c
deleted file mode 100644 (file)
index 51cf971..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- *
- * $Id: d1_handle.c,v 1.9 2002-07-29 20:04:08 adam Exp $
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-struct data1_handle_info {
-    WRBUF wrbuf;
-    char *tab_path;
-    char *tab_root;
-
-    char *read_buf;
-    int read_len;
-
-    data1_absyn_cache absyn_cache;
-    data1_attset_cache attset_cache;
-
-    char *map_buf;
-    int map_len;
-
-    NMEM mem;
-    int flags;
-};
-
-data1_handle data1_create (void)
-{
-    return data1_createx(0);
-}
-
-data1_handle data1_createx (int flags)
-{
-    data1_handle p = (data1_handle)xmalloc (sizeof(*p));
-    if (!p)
-       return NULL;
-    p->tab_path = NULL;
-    p->tab_root = NULL;
-    p->wrbuf = wrbuf_alloc();
-    p->read_buf = NULL;
-    p->read_len = 0;
-    p->map_buf = NULL;
-    p->map_len = 0;
-    p->absyn_cache = NULL;
-    p->attset_cache = NULL;
-    p->mem = nmem_create ();
-    p->flags = flags;
-    return p;
-}
-
-NMEM data1_nmem_get (data1_handle dh)
-{
-    return dh->mem;
-}
-
-data1_absyn_cache *data1_absyn_cache_get (data1_handle dh)
-{
-    return &dh->absyn_cache;
-}
-
-data1_attset_cache *data1_attset_cache_get (data1_handle dh)
-{
-    return &dh->attset_cache;
-}
-
-void data1_destroy (data1_handle dh)
-{
-    if (!dh)
-       return;
-    wrbuf_free (dh->wrbuf, 1);
-    if (dh->tab_path)
-       xfree (dh->tab_path);
-    if (dh->tab_root)
-       xfree (dh->tab_root);
-    if (dh->read_buf)
-       xfree (dh->read_buf);
-    if (dh->map_buf)
-        xfree (dh->map_buf);
-    nmem_destroy (dh->mem);
-    
-    xfree (dh);
-}
-
-WRBUF data1_get_wrbuf (data1_handle dp)
-{
-    return dp->wrbuf;
-}
-
-char **data1_get_read_buf (data1_handle dp, int **lenp)
-{
-    *lenp = &dp->read_len;
-    yaz_log (LOG_DEBUG, "data1_get_read_buf lenp=%u", **lenp);
-    return &dp->read_buf;
-}
-
-char **data1_get_map_buf (data1_handle dp, int **lenp)
-{
-    *lenp = &dp->map_len;
-    yaz_log (LOG_DEBUG, "data1_get_map_buf lenp=%u", **lenp);
-    return &dp->map_buf;
-}
-
-void data1_set_tabpath (data1_handle dp, const char *p)
-{
-    xfree (dp->tab_path);
-    dp->tab_path = NULL;
-    if (p)
-        dp->tab_path = xstrdup (p);
-}
-
-void data1_set_tabroot (data1_handle dp, const char *p)
-{
-    xfree (dp->tab_root);
-    dp->tab_root = NULL;
-    if (p)
-        dp->tab_root = xstrdup (p);
-}
-
-const char *data1_get_tabpath (data1_handle dp)
-{
-    return dp->tab_path;
-}
-
-const char *data1_get_tabroot (data1_handle dp)
-{
-    return dp->tab_root;
-}
-
-FILE *data1_path_fopen (data1_handle dh, const char *file, const char *mode)
-{
-    const char *path = data1_get_tabpath(dh);
-    const char *root = data1_get_tabroot(dh);
-    return yaz_fopen (path, file, "r", root);
-}
-
-int data1_is_xmlmode(data1_handle dh)
-{
-    return dh->flags & DATA1_FLAG_XML;
-}
diff --git a/retrieval/d1_if.c b/retrieval/d1_if.c
deleted file mode 100644 (file)
index 62facc3..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 1995-2000, Index Data.
- * See the file LICENSE for details.
- *
- * d1_if.c : A simple interface for extracting strings from data1_node
- *           tree structures
- *
- * $Log: d1_if.c,v $
- * Revision 1.5  2000-02-10 13:42:43  adam
- * Removed C++ comment.
- *
- * Revision 1.4  2000/01/06 14:30:56  adam
- * Minor change - to prevent warnings.
- *
- * Revision 1.3  2000/01/06 11:27:02  adam
- * Minor fix so that this source compiles using Visual C++.
- *
- * Revision 1.2  2000/01/04 17:46:17  ian
- * Added function to count occurences of a tag spec in a data1 tree.
- *
- * Revision 1.1  1999/12/21 14:16:19  ian
- * Changed retrieval module to allow data1 trees with no associated absyn.
- * Also added a simple interface for extracting values from data1 trees using
- * a string based tagpath.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <yaz/data1.h>
-#include <yaz/log.h>
-
-#include <string.h>
-
-
-/*
- * Search for a token in the supplied string up to the supplied list of stop characters or EOL
- * At the end, return the character causing the break and fill pTokenBuffer with the token string so far
- * After the scan, *pPosInBuffer will point to the next character after the one causing the break and
- *                 pTokenBuffer will contain the actual token
- */
-char data1_ScanNextToken(char* pBuffer,
-                         char** pPosInBuffer,
-                         char* pBreakChars,
-                         char* pWhitespaceChars,
-                         char* pTokenBuffer)
-{
-    char* pBuff = pTokenBuffer;
-    *pBuff = '\0';
-
-    while ( **pPosInBuffer )
-    {
-        if ( strchr(pBreakChars,**pPosInBuffer) != NULL )
-        {
-            /* Current character is a break character */
-            *pBuff++ = '\0';
-            return *((*pPosInBuffer)++);
-        }
-        else
-        {
-            if ( strchr(pWhitespaceChars, **pPosInBuffer) != NULL )
-                (*pPosInBuffer)++;
-            else
-                *pBuff++ = *((*pPosInBuffer)++);
-        }
-    }
-
-    *pBuff++ = *((*pPosInBuffer)++);
-    return(**pPosInBuffer);
-}
-
-/* 
- * Attempt to find a string value given the specified tagpath
- * 
- * Need to make this safe by passing in a buffer..... 
- *
- */
-char *data1_getNodeValue(data1_node* node, char* pTagPath)
-{
-    data1_node* n = NULL;
-
-    n = data1_LookupNode(node, pTagPath );
-
-    if ( n )
-    {
-        /* n should be a tag node with some data under it.... */
-        if ( n->child )
-        {
-            if ( n->child->which == DATA1N_data )
-            {
-                return n->child->u.data.data;
-            }
-            else
-            {
-                yaz_log(LOG_WARN,"Attempting to lookup data for tagpath: Child node is not a data node");
-            }
-        }
-        else
-        {
-            yaz_log(LOG_WARN,"Found a node matching the tagpath, but it has no child data nodes");
-        }
-    }
-    else
-    {
-        yaz_log(LOG_WARN,"Unable to lookup a node on the specified tag path");
-    }
-
-    return "";
-}
-
-
-/* Max length of a tag */
-#define MAX_TAG_SIZE 50
-
-/* 
- * data1_LookupNode : Try and find a node as specified by a tagpath
- */
-data1_node *data1_LookupNode(data1_node* node, char* pTagPath)
-{
-    /* Node matching the pattern in the tagpath */
-    data1_node* matched_node = NULL;
-
-    /* Current Child node as we search for nodes matching the pattern in the tagpath */
-    data1_node* current_child = node->child;
-
-    /* Current position in string */
-    char* pCurrCharInPath = pTagPath;
-
-    /* Work buffer */
-    char Buffer[MAX_TAG_SIZE];
-
-    /* The tag type of this node */
-    int iTagType = 0;
-
-    /* for non string tags, the tag value */
-    int iTagValue = 0;
-
-    /* for string tags, the tag value */
-    char StringTagVal[MAX_TAG_SIZE];
-
-    /* Which occurence of that tag under this node */
-    int iOccurences=0;
-
-    /* Character causing a break */
-    char sepchr = '\0';
-    Buffer[0] = '\0';
-    StringTagVal[0] = '\0';
-
-    sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ",[(."," ", Buffer);
-
-    if ( sepchr == '[' )
-    {
-        /* Next component in node value is [ TagType, TagVal, TagOccurence ] */
-        sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ","," ", Buffer);
-        iTagType = atoi(Buffer);
-
-        /* Occurence is optional... */
-        sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ",]."," ", Buffer);
-
-        if ( iTagType == 3 )
-            strcpy(StringTagVal,Buffer);
-        else
-            iTagValue = atoi(Buffer);
-
-        /* If sepchar was a ',' there should be an instance */
-        if ( sepchr == ',' )
-        {
-            sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "]."," ", Buffer);
-            iOccurences = atoi(Buffer);
-        }
-
-        if ( sepchr == ']' )
-        {
-            /* See if we can scan the . for the next component or the end of the line... */
-            sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "."," ", Buffer);
-        }
-        else
-        {
-            yaz_log(LOG_FATAL,"Node does not end with a ]");
-            /* Fatal Error */
-            return(NULL);
-        }
-    }
-    else
-    {
-        /* We have a TagName so Read up to ( or . or EOL */
-        iTagType = 3;
-        strcpy(StringTagVal,Buffer);
-
-        if ( sepchr == '(' )
-        {
-            /* Read the occurence */
-            sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, ")"," ", Buffer);
-            iOccurences = atoi(Buffer);
-
-            /* See if we can find the . at the end of this clause */
-            sepchr = data1_ScanNextToken(pTagPath, &pCurrCharInPath, "."," ", Buffer);
-        }
-        
-    }
-
-    yaz_log(LOG_DEBUG,"search node for child like [%d,%d,%s,%d]",iTagType,iTagValue,StringTagVal,iOccurences);
-    
-
-    /* OK.. We have extracted tagtype, Value and Occurence, see if we can find a node */
-    /* Under the current parent matching that description                             */
-
-    while ( ( current_child ) && ( matched_node == NULL ) )
-    {
-        if ( current_child->which == DATA1N_tag )
-        {
-            if ( iTagType == 3 )
-            {
-                if ( ( current_child->u.tag.element == NULL ) &&
-                     ( strcmp(current_child->u.tag.tag, StringTagVal) == 0 ) )
-                {
-                    if ( iOccurences )
-                    {
-                        /* Everything matched, but not yet found the
-                           right occurence of the given tag */
-                        iOccurences--;
-                    }
-                    else
-                    {
-                        /* We have matched a string tag... Is there more to
-                           process? */
-                        matched_node = current_child;
-                    }
-                }
-            }
-            else /* Attempt to match real element */
-            {
-                yaz_log(LOG_WARN,"Non string tag matching not yet implemented");
-            }
-        }
-        current_child = current_child->next;
-    }
-
-
-    /* If there is more... Continue */
-    if ( ( sepchr == '.' ) && ( matched_node ) )
-    {
-        return data1_LookupNode(matched_node, pCurrCharInPath);
-    }
-    else
-    {
-        return matched_node;
-    }
-}
-
-/**
-
-data1_CountOccurences
-
-Count the number of occurences of the last instance on a tagpath.
-
-@param data1_node* node : The root of the tree we wish to look for occurences in
-@param const char* pTagPath : The tagpath we want to count the occurences of... 
-
-*/
-int data1_CountOccurences(data1_node* node, char* pTagPath)
-{
-    int iRetVal = 0;
-    data1_node* n = NULL;
-    data1_node* pParent = NULL;
-
-    n = data1_LookupNode(node, pTagPath );
-
-
-    if ( ( n ) &&
-         ( n->which == DATA1N_tag ) &&
-         ( n->parent ) )
-    {
-        data1_node* current_child;
-        pParent = n->parent;
-
-        for ( current_child = pParent->child;
-              current_child;
-              current_child = current_child->next )
-        {
-            if ( current_child->which == DATA1N_tag )
-            {
-                if ( current_child->u.tag.element == NULL )
-                {
-                    if ( ( n->u.tag.tag ) &&
-                         ( current_child->u.tag.tag ) &&
-                         ( strcmp(current_child->u.tag.tag, n->u.tag.tag) == 0 ) )
-                    {
-                        iRetVal++;
-                    }
-                }
-                else if ( current_child->u.tag.element == n->u.tag.element )
-                {
-                    /* Hmmm... Is the above right for non string tags???? */
-                    iRetVal++;
-                }
-            }
-        }
-    }
-
-    return iRetVal;
-}
diff --git a/retrieval/d1_map.c b/retrieval/d1_map.c
deleted file mode 100644 (file)
index d3c79e5..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_map.c,v 1.25 2002-09-24 08:05:41 adam Exp $
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <yaz/oid.h>
-#include <yaz/log.h>
-#include <yaz/readconf.h>
-#include <yaz/tpath.h>
-#include <yaz/data1.h>
-#include <yaz/d1_map.h>
-
-data1_maptab *data1_read_maptab (data1_handle dh, const char *file)
-{
-    NMEM mem = data1_nmem_get (dh);
-    data1_maptab *res = (data1_maptab *)nmem_malloc(mem, sizeof(*res));
-    FILE *f;
-    int lineno = 0;
-    int argc;
-    char *argv[50], line[512];
-    data1_mapunit **mapp;
-    int local_numeric = 0;
-
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "%s", file);
-       return 0;
-    }
-
-    res->name = 0;
-    res->target_absyn_ref = VAL_NONE;
-    res->map = 0;
-    mapp = &res->map;
-    res->next = 0;
-
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-       if (!strcmp(argv[0], "targetref"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args for targetref",
-                       file, lineno);
-               continue;
-           }
-           if ((res->target_absyn_ref = oid_getvalbyname(argv[1]))
-               == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown reference '%s'",
-                       file, lineno, argv[1]);
-               continue;
-           }
-       }
-       else if (!strcmp(argv[0], "targetname"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args for targetname",
-                       file, lineno);
-               continue;
-           }
-           res->target_absyn_name =
-               (char *)nmem_malloc(mem, strlen(argv[1])+1);
-           strcpy(res->target_absyn_name, argv[1]);
-       }
-       else if (!yaz_matchstr(argv[0], "localnumeric"))
-           local_numeric = 1;
-       else if (!strcmp(argv[0], "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args for name", file, lineno);
-               continue;
-           }
-           res->name = (char *)nmem_malloc(mem, strlen(argv[1])+1);
-           strcpy(res->name, argv[1]);
-       }
-       else if (!strcmp(argv[0], "map"))
-       {
-           data1_maptag **mtp;
-           char *ep, *path = argv[2];
-
-           if (argc < 3)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # of args for map",
-                       file, lineno);
-               continue;
-           }
-           *mapp = (data1_mapunit *)nmem_malloc(mem, sizeof(**mapp));
-           (*mapp)->next = 0;
-           if (argc > 3 && !data1_matchstr(argv[3], "nodata"))
-               (*mapp)->no_data = 1;
-           else
-               (*mapp)->no_data = 0;
-           (*mapp)->source_element_name =
-               (char *)nmem_malloc(mem, strlen(argv[1])+1);
-           strcpy((*mapp)->source_element_name, argv[1]);
-           mtp = &(*mapp)->target_path;
-           if (*path == '/')
-               path++;
-           for (ep = strchr(path, '/'); path; (void)((path = ep) &&
-               (ep = strchr(path, '/'))))
-           {
-               int type, np;
-               char valstr[512], parm[512];
-
-               if (ep)
-                   ep++;
-               if ((np = sscanf(path, "(%d,%511[^)]):%511[^/]", &type, valstr,
-                   parm)) < 2)
-               {
-                   yaz_log(LOG_WARN, "%s:%d: Syntax error in map "
-                           "directive: %s", file, lineno, argv[2]);
-                   fclose(f);
-                   return 0;
-               }
-               *mtp = (data1_maptag *)nmem_malloc(mem, sizeof(**mtp));
-               (*mtp)->next = 0;
-               (*mtp)->type = type;
-               if (np > 2 && !data1_matchstr(parm, "new"))
-                   (*mtp)->new_field = 1;
-               else
-                   (*mtp)->new_field = 0;
-               if ((type != 3 || local_numeric) && d1_isdigit(*valstr))
-                {
-                   (*mtp)->which = D1_MAPTAG_numeric;
-                   (*mtp)->value.numeric = atoi(valstr);
-               }
-               else
-               {
-                   (*mtp)->which = D1_MAPTAG_string;
-                   (*mtp)->value.string =
-                       (char *)nmem_malloc(mem, strlen(valstr)+1);
-                   strcpy((*mtp)->value.string, valstr);
-               }
-               mtp = &(*mtp)->next;
-           }
-           mapp = &(*mapp)->next;
-       }
-       else 
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'",
-                   file, lineno, argv[0]);
-
-    fclose(f);
-    return res;
-}
-
-/*
- * Locate node with given elementname.
- * NOTE: This is stupid - we don't find repeats this way.
- */
-static data1_node *find_node(data1_node *p, char *elementname)
-{
-    data1_node *c, *r;
-
-    for (c = p->child; c; c = c->next)
-       if (c->which == DATA1N_tag && c->u.tag.element &&
-           !data1_matchstr(c->u.tag.element->name, elementname))
-           return c;
-       else if ((r = find_node(c, elementname)))
-           return r;
-    return 0;
-}
-
-/*
- * See if the node n is equivalent to the tag t.
- */
-static int tagmatch(data1_node *n, data1_maptag *t)
-{
-    if (n->which != DATA1N_tag)
-       return 0;
-    if (n->u.tag.element)
-    {
-       if (n->u.tag.element->tag->tagset)
-       {
-           if (n->u.tag.element->tag->tagset->type != t->type)
-               return 0;
-       }
-       else if (t->type != 3)
-           return 0;
-       if (n->u.tag.element->tag->which == DATA1T_numeric)
-       {
-           if (t->which != D1_MAPTAG_numeric)
-               return 0;
-           if (n->u.tag.element->tag->value.numeric != t->value.numeric)
-               return 0;
-       }
-       else
-       {
-           if (t->which != D1_MAPTAG_string)
-               return 0;
-           if (data1_matchstr(n->u.tag.element->tag->value.string,
-               t->value.string))
-               return 0;
-       }
-    }
-    else /* local tag */
-    {
-       char str[10];
-
-       if (t->type != 3)
-           return 0;
-       if (t->which == D1_MAPTAG_numeric)
-           sprintf(str, "%d", t->value.numeric);
-       else
-           strcpy(str, t->value.string);
-       if (data1_matchstr(n->u.tag.tag, str))
-           return 0;
-    }
-    return 1;
-}
-
-static data1_node *dup_child (data1_handle dh, data1_node *n,
-                              data1_node **last, NMEM mem,
-                              data1_node *parent)
-{
-    data1_node *first = 0;
-    data1_node **m = &first;
-
-    for (; n; n = n->next)
-    {
-        *last = *m = (data1_node *) nmem_malloc (mem, sizeof(**m));
-        memcpy (*m, n, sizeof(**m));
-        
-        (*m)->parent = parent;
-        (*m)->root = parent->root;
-        (*m)->child = dup_child(dh, n->child, &(*m)->last_child, mem, *m);
-        m = &(*m)->next;
-    }
-    *m = 0;
-    return first;
-}
-
-static int map_children(data1_handle dh, data1_node *n, data1_maptab *map,
-                       data1_node *res, NMEM mem)
-{
-    data1_node *c;
-    data1_mapunit *m;
-    /*
-     * locate each source element in turn.
-     */
-    for (c = n->child; c; c = c->next)
-       if (c->which == DATA1N_tag && c->u.tag.element)
-       {
-           for (m = map->map; m; m = m->next)
-           {
-               if (!data1_matchstr(m->source_element_name,
-                   c->u.tag.element->name))
-               {
-                   data1_node *pn = res;
-                   data1_node *cur = pn->last_child;
-                   data1_maptag *mt;
-
-                   /*
-                    * process the target path specification.
-                    */
-                   for (mt = m->target_path; mt; mt = mt->next)
-                   {
-                       if (!cur || mt->new_field || !tagmatch(cur, mt))
-                       {
-                           cur = data1_mk_node2 (dh, mem, DATA1N_tag, pn);
-                           cur->u.tag.tag = mt->value.string;
-                       }
-                       
-                       if (mt->next)
-                           pn = cur;
-                       else if (!m->no_data)
-                       {
-                            cur->child =
-                                dup_child (dh, c->child,
-                                           &cur->last_child, mem, cur);
-                       }
-                   }
-               }
-           }
-           if (map_children(dh, c, map, res, mem) < 0)
-               return -1;
-       }
-    return 0;
-}
-
-/*
- * Create a (possibly lossy) copy of the given record based on the
- * table. The new copy will refer back to the data of the original record,
- * which should not be discarded during the lifetime of the copy.
- */
-data1_node *data1_map_record (data1_handle dh, data1_node *n,
-                             data1_maptab *map, NMEM m)
-{
-    data1_node *res1, *res = data1_mk_node2 (dh, m, DATA1N_root, 0);
-
-    res->which = DATA1N_root;
-    res->u.root.type = map->target_absyn_name;
-    if (!(res->u.root.absyn = data1_get_absyn(dh, map->target_absyn_name)))
-    {
-       yaz_log(LOG_WARN, "%s: Failed to load target absyn '%s'",
-               map->name, map->target_absyn_name);
-    }
-    if (data1_is_xmlmode(dh))
-    {
-        n = n->child;
-        if (!n)
-            return 0;
-        res1 = data1_mk_tag (dh, m, map->target_absyn_name, 0, res);
-    }
-    else
-        res1 = res;
-
-    if (map_children(dh, n, map, res1, m) < 0)
-    {
-       data1_free_tree(dh, res);
-       return 0;
-    }
-    return res;
-}
-
diff --git a/retrieval/d1_marc.c b/retrieval/d1_marc.c
deleted file mode 100644 (file)
index e410b7c..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_marc.c,v 1.27 2002-08-28 19:34:50 adam Exp $
- */
-
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <yaz/oid.h>
-#include <yaz/log.h>
-#include <yaz/marcdisp.h>
-#include <yaz/readconf.h>
-#include <yaz/xmalloc.h>
-#include <yaz/data1.h>
-#include <yaz/tpath.h>
-
-data1_marctab *data1_read_marctab (data1_handle dh, const char *file)
-{
-    FILE *f;
-    NMEM mem = data1_nmem_get (dh);
-    data1_marctab *res = (data1_marctab *)nmem_malloc(mem, sizeof(*res));
-    char line[512], *argv[50];
-    int lineno = 0;
-    int argc;
-    
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "%s", file);
-       return 0;
-    }
-
-    res->name = 0;
-    res->reference = VAL_NONE;
-    res->next = 0;
-    res->length_data_entry = 4;
-    res->length_starting = 5;
-    res->length_implementation = 0;
-    strcpy(res->future_use, "4");
-
-    strcpy(res->record_status, "n");
-    strcpy(res->implementation_codes, "    ");
-    res->indicator_length = 2;
-    res->identifier_length = 2;
-    res->force_indicator_length = -1;
-    res->force_identifier_length = -1;
-    strcpy(res->user_systems, "z  ");
-    
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-       if (!strcmp(*argv, "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d:Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->name = nmem_strdup(mem, argv[1]);
-       }
-       else if (!strcmp(*argv, "reference"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           if ((res->reference = oid_getvalbyname(argv[1])) == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown tagset reference '%s'",
-                       file, lineno, argv[1]);
-               continue;
-           }
-       }
-       else if (!strcmp(*argv, "length-data-entry"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->length_data_entry = atoi(argv[1]);
-       }
-       else if (!strcmp(*argv, "length-starting"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->length_starting = atoi(argv[1]);
-       }
-       else if (!strcmp(*argv, "length-implementation"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->length_implementation = atoi(argv[1]);
-       }
-       else if (!strcmp(*argv, "future-use"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           strncpy(res->future_use, argv[1], 2);
-       }
-       else if (!strcmp(*argv, "force-indicator-length"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->force_indicator_length = atoi(argv[1]);
-       }
-       else if (!strcmp(*argv, "force-identifier-length"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Missing arg for %s", file, lineno,
-                       *argv);
-               continue;
-           }
-           res->force_identifier_length = atoi(argv[1]);
-       }
-       else
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", file, lineno,
-                   *argv);
-
-    fclose(f);
-    return res;
-}
-
-
-/*
- * Locate some data under this node. This routine should handle variants
- * prettily.
- */
-static char *get_data(data1_node *n, int *len)
-{
-    char *r;
-
-    while (n)
-    {
-        if (n->which == DATA1N_data)
-        {
-            int i;
-            *len = n->u.data.len;
-
-            for (i = 0; i<*len; i++)
-                if (!d1_isspace(n->u.data.data[i]))
-                    break;
-            while (*len && d1_isspace(n->u.data.data[*len - 1]))
-                (*len)--;
-            *len = *len - i;
-            if (*len > 0)
-                return n->u.data.data + i;
-        }
-        if (n->which == DATA1N_tag)
-            n = n->child;
-       else if (n->which == DATA1N_data)
-            n = n->next;
-       else
-            break;     
-    }
-    r = "";
-    *len = strlen(r);
-    return r;
-}
-
-static void memint (char *p, int val, int len)
-{
-    char buf[10];
-
-    if (len == 1)
-        *p = val + '0';
-    else
-    {
-        sprintf (buf, "%08d", val);
-        memcpy (p, buf+8-len, len);
-    }
-}
-
-static int is_indicator (data1_marctab *p, data1_node *subf)
-{
-#if 1
-    if (p->indicator_length != 2 ||
-       (subf && subf->which == DATA1N_tag && strlen(subf->u.tag.tag) == 2))
-       return 1;
-#else
-    if (subf && subf->which == DATA1N_tag && subf->child->which == DATA1N_tag)
-       return 1;
-#endif
-    return 0;
-}
-
-static int nodetomarc(data1_handle dh,
-                     data1_marctab *p, data1_node *n, int selected,
-                      char **buf, int *size)
-{
-    int len = 26;
-    int dlen;
-    int base_address = 25;
-    int entry_p, data_p;
-    char *op;
-    data1_node *field, *subf;
-
-    yaz_log (LOG_DEBUG, "nodetomarc");
-
-    for (field = n->child; field; field = field->next)
-    {
-        int is00X = 0;
-
-       if (field->which != DATA1N_tag)
-       {
-           yaz_log(LOG_WARN, "Malformed field composition for marc output.");
-           return -1;
-       }
-       if (selected && !field->u.tag.node_selected)
-           continue;
-
-       subf = field->child;
-        if (!subf)
-            continue;
-
-        len += 4 + p->length_data_entry + p->length_starting
-            + p->length_implementation;
-        base_address += 3 + p->length_data_entry + p->length_starting
-            + p->length_implementation;
-
-       if (subf->which == DATA1N_data)
-            is00X = 1;
-       if (!data1_is_xmlmode(dh))
-        {
-            if (subf->which == DATA1N_tag && !strcmp(subf->u.tag.tag, "@"))
-                is00X = 1;
-        }
-            
-       
-        if (!is00X)
-            len += p->indicator_length;  
-       /*  we'll allow no indicator if length is not 2 */
-       if (is_indicator (p, subf))
-           subf = subf->child;
-
-        for (; subf; subf = subf->next)
-        {
-            if (!is00X)
-                len += p->identifier_length;
-           get_data(subf, &dlen);
-            len += dlen;
-        }
-    }
-
-    if (!*buf)
-       *buf = (char *)xmalloc(*size = len);
-    else if (*size <= len)
-       *buf = (char *)xrealloc(*buf, *size = len);
-       
-    op = *buf;
-    memint (op, len, 5);
-    memcpy (op+5, p->record_status, 1);
-    memcpy (op+6, p->implementation_codes, 4);
-    memint (op+10, p->indicator_length, 1);
-    memint (op+11, p->identifier_length, 1);
-    memint (op+12, base_address, 5);
-    memcpy (op+17, p->user_systems, 3);
-    memint (op+20, p->length_data_entry, 1);
-    memint (op+21, p->length_starting, 1);
-    memint (op+22, p->length_implementation, 1);
-    memcpy (op+23, p->future_use, 1);
-    
-    entry_p = 24;
-    data_p = base_address;
-
-    for (field = n->child; field; field = field->next)
-    {
-        int is00X = 0;
-
-        int data_0 = data_p;
-       char *indicator_data = "    ";
-       if (selected && !field->u.tag.node_selected)
-           continue;
-
-       subf = field->child;
-        if (!subf)
-            continue;
-
-        if (subf->which == DATA1N_data)
-            is00X = 1;
-       if (!data1_is_xmlmode(dh))
-        {
-            if (subf->which == DATA1N_tag && !strcmp(subf->u.tag.tag, "@"))
-                is00X = 1;
-        }
-
-       if (is_indicator (p, subf))
-       {
-            indicator_data = subf->u.tag.tag;
-           subf = subf->child;
-       }
-        if (!is00X)
-        {
-            memcpy (op + data_p, indicator_data, p->indicator_length);
-            data_p += p->indicator_length;
-        }
-        for (; subf; subf = subf->next)
-        {
-           char *data;
-
-            if (!is00X)
-            {
-                const char *identifier = "a";
-                if (subf->which != DATA1N_tag)
-                    yaz_log(LOG_WARN, "Malformed fields for marc output.");
-                else
-                    identifier = subf->u.tag.tag;
-                op[data_p] = ISO2709_IDFS;
-                memcpy (op + data_p+1, identifier, p->identifier_length-1);
-                data_p += p->identifier_length;
-            }
-           data = get_data(subf, &dlen);
-            memcpy (op + data_p, data, dlen);
-            data_p += dlen;
-        }
-        op[data_p++] = ISO2709_FS;
-
-        memcpy (op + entry_p, field->u.tag.tag, 3);
-        entry_p += 3;
-        memint (op + entry_p, data_p - data_0, p->length_data_entry);
-        entry_p += p->length_data_entry;
-        memint (op + entry_p, data_0 - base_address, p->length_starting);
-        entry_p += p->length_starting;
-        entry_p += p->length_implementation;
-    }
-    op[entry_p++] = ISO2709_FS;
-    assert (entry_p == base_address);
-    op[data_p++] = ISO2709_RS;
-    assert (data_p == len);
-    return len;
-}
-
-char *data1_nodetomarc(data1_handle dh, data1_marctab *p, data1_node *n,
-                      int selected, int *len)
-{
-    int *size;
-    char **buf = data1_get_map_buf (dh, &size);
-
-    n = data1_get_root_tag (dh, n);
-    if (!n)
-        return 0;
-    *len = nodetomarc(dh, p, n, selected, buf, size);
-    return *buf;
-}
diff --git a/retrieval/d1_prtree.c b/retrieval/d1_prtree.c
deleted file mode 100644 (file)
index 4354b30..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_prtree.c,v 1.11 2002-10-08 20:14:44 adam Exp $
- */
-
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-static void pr_string (FILE *out, const char *str, int len)
-{
-    int i;
-    for (i = 0; i<len; i++)
-    {
-       int c = str[i];
-       if (c < 32 || c >126)
-           fprintf (out, "\\x%02x", c & 255);
-       else
-           fputc (c, out);
-    }
-}
-
-static void pr_tree (data1_handle dh, data1_node *n, FILE *out, int level)
-{
-    fprintf (out, "%*s", level, "");
-    switch (n->which)
-    {
-    case DATA1N_root:
-        fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
-        break;
-    case DATA1N_tag:
-       fprintf (out, "tag type=%s sel=%d\n", n->u.tag.tag,
-                 n->u.tag.node_selected);
-        if (n->u.tag.attributes)
-        {
-            data1_xattr *xattr = n->u.tag.attributes;
-            fprintf (out, "%*s attr", level, "");
-            for (; xattr; xattr = xattr->next)
-                fprintf (out, " %s=%s ", xattr->name, xattr->value);
-            fprintf (out, "\n");
-        }
-       break;
-    case DATA1N_data:
-    case DATA1N_comment:
-        if (n->which == DATA1N_data)
-            fprintf (out, "data type=");
-        else
-            fprintf (out, "comment type=");
-       switch (n->u.data.what)
-       {
-       case DATA1I_inctxt:
-           fprintf (out, "inctxt\n");
-           break;
-       case DATA1I_incbin:
-           fprintf (out, "incbin\n");
-           break;
-       case DATA1I_text:
-           fprintf (out, "text '");
-           pr_string (out, n->u.data.data, n->u.data.len);
-           fprintf (out, "'\n");
-           break;
-       case DATA1I_num:
-           fprintf (out, "num '");
-           pr_string (out, n->u.data.data, n->u.data.len);
-           fprintf (out, "'\n");
-           break;
-       case DATA1I_oid:
-           fprintf (out, "oid '");
-           pr_string (out, n->u.data.data, n->u.data.len);
-           fprintf (out, "'\n");
-           break;
-       case DATA1I_xmltext:
-           fprintf (out, "xml text '");
-           pr_string (out, n->u.data.data, n->u.data.len);
-           fprintf (out, "'\n");
-            break;
-       default:
-           fprintf (out, "unknown(%d)\n", n->u.data.what);
-           break;
-       }
-       break;
-    case DATA1N_preprocess:
-       fprintf (out, "preprocess target=%s\n", n->u.preprocess.target);
-        if (n->u.preprocess.attributes)
-        {
-            data1_xattr *xattr = n->u.preprocess.attributes;
-            fprintf (out, "%*s attr", level, "");
-            for (; xattr; xattr = xattr->next)
-                fprintf (out, " %s=%s ", xattr->name, xattr->value);
-            fprintf (out, "\n");
-        }
-       break;
-    case DATA1N_variant:
-       fprintf (out, "variant\n");
-#if 0
-       if (n->u.variant.type->name)
-           fprintf (out, " class=%s type=%d value=%s\n",
-                    n->u.variant.type->name, n->u.variant.type->type,
-                    n->u.variant.value);
-#endif
-       break;
-    default:
-       fprintf (out, "unknown(%d)\n", n->which);
-    }
-    if (n->child)
-       pr_tree (dh, n->child, out, level+4);
-    if (n->next)
-       pr_tree (dh, n->next, out, level);
-}
-
-
-void data1_pr_tree (data1_handle dh, data1_node *n, FILE *out)
-{
-    pr_tree (dh, n, out, 0);
-}
diff --git a/retrieval/d1_read.c b/retrieval/d1_read.c
deleted file mode 100644 (file)
index 281f7ca..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_read.c,v 1.54 2002-10-08 23:00:09 adam Exp $
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <yaz/xmalloc.h>
-#include <yaz/yaz-util.h>
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-data1_node *data1_get_root_tag (data1_handle dh, data1_node *n)
-{
-    if (!n)
-        return 0;
-    if (data1_is_xmlmode(dh))
-    {
-        n = n->child;
-        while (n && n->which != DATA1N_tag)
-            n = n->next;
-    }
-    return n;
-}
-        
-/*
- * get the tag which is the immediate parent of this node (this may mean
- * traversing intermediate things like variants and stuff.
- */
-data1_node *get_parent_tag (data1_handle dh, data1_node *n)
-{
-    if (data1_is_xmlmode(dh))
-    {
-        for (; n && n->which != DATA1N_root; n = n->parent)
-            if (n->which == DATA1N_tag && n->parent &&
-                n->parent->which != DATA1N_root)
-                return n;
-    }
-    else
-    {
-        for (; n && n->which != DATA1N_root; n = n->parent)
-            if (n->which == DATA1N_tag)
-                return n;
-    }
-    return 0;
-}
-
-data1_node *data1_mk_node (data1_handle dh, NMEM m)
-{
-    return data1_mk_node2 (dh, m, DATA1N_root, 0);
-}
-
-data1_node *data1_mk_node_type (data1_handle dh, NMEM m, int type)
-{
-    return data1_mk_node2 (dh, m, type, 0);
-}
-
-static void data1_init_node (data1_handle dh, data1_node *r, int type)
-{
-    r->which = type;
-    switch(type)
-    {
-    case DATA1N_tag:
-       r->u.tag.tag = 0;
-       r->u.tag.element = 0;
-       r->u.tag.no_data_requested = 0;
-       r->u.tag.node_selected = 0;
-       r->u.tag.make_variantlist = 0;
-       r->u.tag.get_bytes = -1;
-       r->u.tag.attributes = 0;
-       break;
-    case DATA1N_root:
-       r->u.root.type = 0;
-       r->u.root.absyn = 0;
-       break;
-    case DATA1N_data:
-       r->u.data.data = 0;
-       r->u.data.len = 0;
-       r->u.data.what = 0;
-       r->u.data.formatted_text = 0;
-        break;
-    case DATA1N_comment:
-       r->u.data.data = 0;
-       r->u.data.len = 0;
-       r->u.data.what = 0;
-       r->u.data.formatted_text = 1;
-        break;
-    case DATA1N_variant:
-        r->u.variant.type = 0;
-        r->u.variant.value = 0;
-       break;
-    case DATA1N_preprocess:
-        r->u.preprocess.target = 0;
-        r->u.preprocess.attributes = 0;
-        break;
-    default:
-       logf (LOG_WARN, "data_mk_node_type. bad type = %d\n", type);
-    }
-}
-
-data1_node *data1_append_node (data1_handle dh, NMEM m, int type,
-                               data1_node *parent)
-{
-    data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r));
-    r->next = r->child = r->last_child = 0;
-    r->destroy = 0;
-    
-    if (!parent)
-        r->root = r;
-    else
-    {
-        r->root = parent->root;
-        r->parent = parent;
-        if (!parent->child)
-            parent->child = parent->last_child = r;
-        else
-            parent->last_child->next = r;
-        parent->last_child = r;
-    }
-    data1_init_node(dh, r, type);
-    return r;
-}
-
-data1_node *data1_mk_node2 (data1_handle dh, NMEM m, int type,
-                            data1_node *parent)
-{
-    return data1_append_node (dh, m, type, parent);
-}
-
-data1_node *data1_insert_node (data1_handle dh, NMEM m, int type,
-                               data1_node *parent)
-{
-    data1_node *r = (data1_node *)nmem_malloc(m, sizeof(*r));
-    r->next = r->child = r->last_child = 0;
-    r->destroy = 0;
-    
-    if (!parent)
-        r->root = r;
-    else
-    {
-        r->root = parent->root;
-        r->parent = parent;
-        if (!parent->child)
-            parent->last_child = r;
-        else
-            r->next = parent->child;
-        parent->child = r;
-    }
-    data1_init_node(dh, r, type);
-    return r;
-}
-
-void data1_free_tree (data1_handle dh, data1_node *t)
-{
-    data1_node *p = t->child, *pn;
-
-    while (p)
-    {
-       pn = p->next;
-       data1_free_tree (dh, p);
-       p = pn;
-    }
-    if (t->destroy)
-       (*t->destroy)(t);
-}
-
-data1_node *data1_mk_root (data1_handle dh, NMEM nmem, const char *name)
-{
-    data1_absyn *absyn = data1_get_absyn (dh, name);
-    data1_node *res;
-    if (!absyn)
-    {
-        yaz_log(LOG_WARN, "Unable to acquire abstract syntax " "for '%s'",
-                name); 
-        /* It's now OK for a record not to have an absyn */
-    }
-    res = data1_mk_node2 (dh, nmem, DATA1N_root, 0);
-    res->u.root.type = data1_insert_string (dh, res, nmem, name);
-    res->u.root.absyn = absyn;
-    return res;
-}
-
-void data1_set_root(data1_handle dh, data1_node *res,
-                    NMEM nmem, const char *name)
-{
-    data1_absyn *absyn = data1_get_absyn (dh, name);
-
-    res->u.root.type = data1_insert_string (dh, res, nmem, name);
-    res->u.root.absyn = absyn;
-}
-
-data1_node *data1_mk_preprocess (data1_handle dh, NMEM nmem,
-                                 const char *target,
-                                 const char **attr, data1_node *at)
-{
-    return data1_mk_preprocess_n (dh, nmem, target, strlen(target),
-                                  attr, at);
-}
-
-data1_node *data1_mk_preprocess_n (data1_handle dh, NMEM nmem,
-                                   const char *target, size_t len,
-                                   const char **attr, data1_node *at)
-{
-    data1_xattr **p;
-    data1_node *res = data1_mk_node2 (dh, nmem, DATA1N_preprocess, at);
-    res->u.preprocess.target = data1_insert_string_n (dh, res, nmem,
-                                                      target, len);
-    
-    p = &res->u.preprocess.attributes;
-    while (attr && *attr)
-    {
-        *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p));
-        (*p)->name = nmem_strdup (nmem, *attr++);
-        (*p)->value = nmem_strdup (nmem, *attr++);
-        (*p)->what = DATA1I_text;
-
-        p = &(*p)->next;
-    }
-    *p = 0;
-    return res;
-}
-
-data1_node *data1_mk_tag_n (data1_handle dh, NMEM nmem, 
-                            const char *tag, size_t len, const char **attr,
-                            data1_node *at)
-{
-    data1_node *partag = get_parent_tag(dh, at);
-    data1_node *res = data1_mk_node2 (dh, nmem, DATA1N_tag, at);
-    data1_xattr **p;
-    data1_element *e = 0;
-    
-    res->u.tag.tag = data1_insert_string_n (dh, res, nmem, tag, len);
-    
-    if (!partag)  /* top tag? */
-        e  = data1_getelementbytagname (dh, at->root->u.root.absyn,
-                                        0 /* index as local */,
-                                        res->u.tag.tag);
-    else
-    {
-        /* only set element for known tags */
-        e = partag->u.tag.element;
-        if (e)
-            e = data1_getelementbytagname (dh, at->root->u.root.absyn,
-                                           e, res->u.tag.tag);
-    }
-    res->u.tag.element = e;
-    p = &res->u.tag.attributes;
-    while (attr && *attr)
-    {
-        *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p));
-        (*p)->name = nmem_strdup (nmem, *attr++);
-        (*p)->value = nmem_strdup (nmem, *attr++);
-        (*p)->what = DATA1I_text;
-        p = &(*p)->next;
-    }
-    *p = 0;
-    return res;
-}
-
-void data1_tag_add_attr (data1_handle dh, NMEM nmem,
-                         data1_node *res, const char **attr)
-{
-    data1_xattr **p;
-
-    if (res->which != DATA1N_tag)
-        return;
-
-    p = &res->u.tag.attributes;
-    while (*p)
-        p = &(*p)->next;
-
-    while (attr && *attr)
-    {
-        *p = (data1_xattr*) nmem_malloc (nmem, sizeof(**p));
-        (*p)->name = nmem_strdup (nmem, *attr++);
-        (*p)->value = nmem_strdup (nmem, *attr++);
-        (*p)->what = DATA1I_text;
-        p = &(*p)->next;
-    }
-    *p = 0;
-}
-
-data1_node *data1_mk_tag (data1_handle dh, NMEM nmem,
-                          const char *tag, const char **attr, data1_node *at) 
-{
-    return data1_mk_tag_n (dh, nmem, tag, strlen(tag), attr, at);
-}
-
-data1_node *data1_search_tag (data1_handle dh, data1_node *n,
-                              const char *tag)
-{
-    if (*tag == '/')
-    {
-        n = data1_get_root_tag (dh, n);
-        if (n)
-            n = n->child;
-        tag++;
-    }
-    for (; n; n = n->next)
-       if (n->which == DATA1N_tag && n->u.tag.tag &&
-           !yaz_matchstr (tag, n->u.tag.tag))
-       {
-           return n;
-       }
-    return 0;
-}
-
-data1_node *data1_mk_tag_uni (data1_handle dh, NMEM nmem, 
-                              const char *tag, data1_node *at)
-{
-    data1_node *node = data1_search_tag (dh, at->child, tag);
-    if (!node)
-       node = data1_mk_tag (dh, nmem, tag, 0 /* attr */, at);
-    else
-        node->child = node->last_child = 0;
-    return node;
-}
-
-data1_node *data1_mk_text_n (data1_handle dh, NMEM mem,
-                             const char *buf, size_t len, data1_node *parent)
-{
-    data1_node *res = data1_mk_node2 (dh, mem, DATA1N_data, parent);
-    res->u.data.what = DATA1I_text;
-    res->u.data.len = len;
-    
-    res->u.data.data = data1_insert_string_n (dh, res, mem, buf, len);
-    return res;
-}
-
-data1_node *data1_mk_text_nf (data1_handle dh, NMEM mem,
-                              const char *buf, size_t len, data1_node *parent)
-{
-    data1_node *res = data1_mk_text_n (dh, mem, buf, len, parent);
-    res->u.data.formatted_text = 1;
-    return res;
-}
-
-data1_node *data1_mk_text (data1_handle dh, NMEM mem,
-                           const char *buf, data1_node *parent)
-{
-    return data1_mk_text_n (dh, mem, buf, strlen(buf), parent);
-}
-
-data1_node *data1_mk_comment_n (data1_handle dh, NMEM mem,
-                                const char *buf, size_t len,
-                                data1_node *parent)
-{
-    data1_node *res = data1_mk_node2 (dh, mem, DATA1N_comment, parent);
-    res->u.data.what = DATA1I_text;
-    res->u.data.len = len;
-    
-    res->u.data.data = data1_insert_string_n (dh, res, mem, buf, len);
-    return res;
-}
-
-data1_node *data1_mk_comment (data1_handle dh, NMEM mem,
-                              const char *buf, data1_node *parent)
-{
-    return data1_mk_comment_n (dh, mem, buf, strlen(buf), parent);
-}
-
-char *data1_insert_string_n (data1_handle dh, data1_node *res,
-                             NMEM m, const char *str, size_t len)
-{
-    char *b;
-    if (len >= DATA1_LOCALDATA)
-        b = (char *) nmem_malloc (m, len+1);
-    else
-        b = res->lbuf;
-    memcpy (b, str, len);
-    b[len] = 0;
-    return b;
-}
-
-char *data1_insert_string (data1_handle dh, data1_node *res,
-                           NMEM m, const char *str)
-{
-    return data1_insert_string_n (dh, res, m, str, strlen(str));
-}
-
-static data1_node *data1_add_insert_taggeddata(data1_handle dh,
-                                               data1_node *at,
-                                               const char *tagname, NMEM m,
-                                               int local_allowed,
-                                              int insert_mode)
-{
-    data1_node *root = at->root;
-    data1_node *partag = get_parent_tag (dh, at);
-    data1_element *e = NULL;
-    data1_node *datn = 0;
-    data1_node *tagn = 0;
-
-    if (!partag)
-        e = data1_getelementbytagname (dh, root->u.root.absyn, 0, tagname);
-    else 
-    {
-       e = partag->u.tag.element;
-        if (e)
-            e = data1_getelementbytagname (dh, root->u.root.absyn, e, tagname);
-    }
-    if (local_allowed || e)
-    {
-        if (insert_mode)
-            tagn = data1_insert_node (dh, m, DATA1N_tag, at);
-        else
-            tagn = data1_append_node (dh, m, DATA1N_tag, at);
-        tagn->u.tag.tag = data1_insert_string (dh, tagn, m, tagname);
-        tagn->u.tag.element = e;
-        datn = data1_mk_node2 (dh, m, DATA1N_data, tagn);
-    }
-    return datn;
-}
-
-data1_node *data1_mk_tag_data(data1_handle dh, data1_node *at,
-                              const char *tagname, NMEM m)
-{
-    return data1_add_insert_taggeddata (dh, at, tagname, m, 1, 0);
-}
-
-
-/*
- * Insert a tagged node into the record root as first child of the node at
- * which should be root or tag itself). Returns pointer to the data node,
- * which can then be modified.
- */
-data1_node *data1_mk_tag_data_wd(data1_handle dh, data1_node *at,
-                                 const char *tagname, NMEM m)
-{
-    return data1_add_insert_taggeddata (dh, at, tagname, m, 0, 1);
-}
-
-data1_node *data1_insert_taggeddata (data1_handle dh, data1_node *root,
-                                     data1_node *at, const char *tagname,
-                                     NMEM m)
-{
-    return data1_add_insert_taggeddata (dh, at, tagname, m, 0, 1);
-}
-
-data1_node *data1_add_taggeddata (data1_handle dh, data1_node *root,
-                                  data1_node *at, const char *tagname,
-                                  NMEM m)
-{
-    return data1_add_insert_taggeddata (dh, at, tagname, m, 1, 0);
-}
-
-data1_node *data1_mk_tag_data_int (data1_handle dh, data1_node *at,
-                                   const char *tag, int num,
-                                   NMEM nmem)
-{
-    data1_node *node_data;
-    
-    node_data = data1_mk_tag_data (dh, at, tag, nmem);
-    if (!node_data)
-       return 0;
-    node_data->u.data.what = DATA1I_num;
-    node_data->u.data.data = node_data->lbuf;
-    sprintf (node_data->u.data.data, "%d", num);
-    node_data->u.data.len = strlen (node_data->u.data.data);
-    return node_data;
-}
-
-data1_node *data1_mk_tag_data_oid (data1_handle dh, data1_node *at,
-                                   const char *tag, Odr_oid *oid,
-                                   NMEM nmem)
-{
-    data1_node *node_data;
-    char str[128], *p = str;
-    Odr_oid *ii;
-    
-    node_data = data1_mk_tag_data (dh, at, tag, nmem);
-    if (!node_data)
-       return 0;
-    
-    for (ii = oid; *ii >= 0; ii++)
-    {
-       if (ii != oid)
-           *p++ = '.';
-       sprintf (p, "%d", *ii);
-       p += strlen (p);
-    }
-    node_data->u.data.what = DATA1I_oid;
-    node_data->u.data.len = strlen (str);
-    node_data->u.data.data = data1_insert_string (dh, node_data, nmem, str);
-    return node_data;
-}
-
-
-data1_node *data1_mk_tag_data_text (data1_handle dh, data1_node *at,
-                                    const char *tag, const char *str,
-                                    NMEM nmem)
-{
-    data1_node *node_data;
-    
-    node_data = data1_mk_tag_data (dh, at, tag, nmem);
-    if (!node_data)
-       return 0;
-    node_data->u.data.what = DATA1I_text;
-    node_data->u.data.len = strlen (str);
-    node_data->u.data.data = data1_insert_string (dh, node_data, nmem, str);
-    return node_data;
-}
-
-
-data1_node *data1_mk_tag_data_text_uni (data1_handle dh, data1_node *at,
-                                        const char *tag, const char *str,
-                                        NMEM nmem)
-{
-    data1_node *node = data1_search_tag (dh, at->child, tag);
-    if (!node)
-        return data1_mk_tag_data_text (dh, at, tag, str, nmem);
-    else
-    {
-       data1_node *node_data = node->child;
-       node_data->u.data.what = DATA1I_text;
-       node_data->u.data.len = strlen (str);
-       node_data->u.data.data = data1_insert_string (dh, node_data,
-                                                     nmem, str);
-        node_data->child = node_data->last_child = 0;
-       return node_data;
-    }
-}
-
-static int ampr (int (*get_byte)(void *fh), void *fh, int *amp)
-{
-#if 1
-    int c = (*get_byte)(fh);
-    *amp = 0;
-    return c;
-#else
-    int c = (*get_byte)(fh);
-    *amp = 0;
-    if (c == '&')
-    {
-        char ent[20];
-        int i = 0;
-       
-        while (1)
-        {
-            c = (*get_byte)(fh);
-            if (c == ';')
-            {
-                ent[i] = 0;
-                
-                c = ' ';
-                if (!strcmp (ent, "quot"))
-                    c = '"';
-                if (!strcmp (ent, "apos"))
-                    c = '\'';
-                if (!strcmp (ent, "gt"))
-                    c = '>';
-                if (!strcmp (ent, "lt"))
-                    c = '<';
-                if (!strcmp (ent, "amp"))
-                    c = '&';
-                *amp = 1;
-                break;
-            }
-            else if (c == 0 || d1_isspace(c))
-                break;
-            if (i < 19)
-                ent[i++] = c;
-        }
-    }
-    return c;
-#endif
-}
-
-data1_xattr *data1_read_xattr (data1_handle dh, NMEM m,
-                              int (*get_byte)(void *fh), void *fh,
-                              WRBUF wrbuf, int *ch, int *amp)
-{
-    data1_xattr *p_first = 0;
-    data1_xattr **pp = &p_first;
-    int c = *ch;
-    for (;;)
-    {
-       data1_xattr *p;
-       int len;
-       while (*amp || (c && d1_isspace(c)))
-           c = ampr (get_byte, fh, amp);
-       if (*amp == 0 && (c == 0 || c == '>' || c == '/'))
-           break;
-       *pp = p = (data1_xattr *) nmem_malloc (m, sizeof(*p));
-       p->next = 0;
-       pp = &p->next;
-       p->value = 0;
-        p->what = DATA1I_xmltext;
-       
-       wrbuf_rewind(wrbuf);
-       while (c && c != '=' && c != '>' && c != '/' && !d1_isspace(c))
-       {
-           wrbuf_putc (wrbuf, c);
-           c = ampr (get_byte, fh, amp);
-       }
-       wrbuf_putc (wrbuf, '\0');
-       len = wrbuf_len(wrbuf);
-       p->name = (char*) nmem_malloc (m, len);
-       strcpy (p->name, wrbuf_buf(wrbuf));
-       if (c == '=')
-       {
-           c = ampr (get_byte, fh, amp);
-           if (*amp == 0 && c == '"')
-           {
-               c = ampr (get_byte, fh, amp);   
-               wrbuf_rewind(wrbuf);
-               while (*amp || (c && c != '"'))
-               {
-                   wrbuf_putc (wrbuf, c);
-                   c = ampr (get_byte, fh, amp);
-               }
-               if (c)
-                   c = ampr (get_byte, fh, amp);
-           }
-           else if (*amp == 0 && c == '\'')
-           {
-               c = ampr (get_byte, fh, amp);   
-               wrbuf_rewind(wrbuf);
-               while (*amp || (c && c != '\''))
-               {
-                   wrbuf_putc (wrbuf, c);
-                   c = ampr (get_byte, fh, amp);
-               }
-               if (c)
-                   c = ampr (get_byte, fh, amp);
-           }
-           else
-           {
-               wrbuf_rewind(wrbuf);
-               while (*amp || (c && c != '>' && c != '/'))
-               {
-                   wrbuf_putc (wrbuf, c);
-                   c = ampr (get_byte, fh, amp);
-               }
-            }
-           wrbuf_putc (wrbuf, '\0');
-           len = wrbuf_len(wrbuf);
-           p->value = (char*) nmem_malloc (m, len);
-           strcpy (p->value, wrbuf_buf(wrbuf));
-       }
-    }
-    *ch = c;
-    return p_first;
-}
-
-/*
- * Ugh. Sometimes functions just grow and grow on you. This one reads a
- * 'node' and its children.
- */
-data1_node *data1_read_nodex (data1_handle dh, NMEM m,
-                             int (*get_byte)(void *fh), void *fh, WRBUF wrbuf)
-{
-    data1_node *d1_stack[256];
-    data1_node *res;
-    int c, amp;
-    int level = 0;
-    int line = 1;
-
-    d1_stack[level] = 0;
-    c = ampr (get_byte, fh, &amp);
-    while (c != '\0')
-    {
-       data1_node *parent = level ? d1_stack[level-1] : 0;
-
-       if (amp == 0 && c == '<') /* beginning of tag */
-       {
-           data1_xattr *xattr;
-
-           char tag[64];
-           char args[256];
-           int null_tag = 0;
-           int end_tag = 0;
-           size_t i = 0;
-
-           c = ampr (get_byte, fh, &amp);
-           if (amp == 0 && c == '/')
-           {
-               end_tag = 1;
-               c = ampr (get_byte, fh, &amp);
-           }
-           else if (amp == 0 && c == '!')
-           {
-                int c0, amp0;
-              
-                wrbuf_rewind(wrbuf);
-                
-                c0 = ampr (get_byte, fh, &amp0);
-                if (amp0 == 0 && c0 == '\0')
-                    break;
-                c = ampr (get_byte, fh, &amp);
-                
-                if (amp0 == 0 && c0 == '-' && amp == 0 && c == '-')
-                {
-                    /* COMMENT: <!-- ... --> */
-                    int no_dash = 0;
-                    
-                    c = ampr (get_byte, fh, &amp);
-                    while (amp || c)
-                    {
-                        if (amp == 0 && c == '-')
-                            no_dash++;
-                        else if (amp == 0 && c == '>' && no_dash >= 2)
-                        {
-                            if (level > 0)
-                                d1_stack[level] = 
-                                    data1_mk_comment_n (
-                                        dh, m,
-                                        wrbuf_buf(wrbuf), wrbuf_len(wrbuf)-2,
-                                        d1_stack[level-1]);
-                            c = ampr (get_byte, fh, &amp); /* skip > */
-                            break;
-                        }
-                        else
-                            no_dash = 0;
-                        wrbuf_putc (wrbuf, c);
-                        c = ampr (get_byte, fh, &amp);
-                    }
-                    continue;
-                }
-                else
-                {   /* DIRECTIVE: <! .. > */
-       
-                   int blevel = 0;
-                    while (amp || c)
-                    {
-                        if (amp == 0 && c == '>' && blevel == 0)
-                        {
-                            c = ampr (get_byte, fh, &amp);
-                           break;
-                        }
-                       if (amp == 0 && c == '[')
-                           blevel++;
-                       if (amp == 0 && c == ']' && blevel > 0)
-                           blevel--;
-                        c = ampr (get_byte, fh, &amp);
-                    }
-                    continue;
-                }
-           }
-           while (amp || (c && c != '>' && c != '/' && !d1_isspace(c)))
-           {
-               if (i < (sizeof(tag)-1))
-                   tag[i++] = c;
-               c = ampr (get_byte, fh, &amp);
-           }
-           tag[i] = '\0';
-           xattr = data1_read_xattr (dh, m, get_byte, fh, wrbuf, &c, &amp);
-           args[0] = '\0';
-           if (amp == 0 && c == '/')
-           {    /* <tag attrs/> or <tag/> */
-               null_tag = 1;
-               c = ampr (get_byte, fh, &amp);
-           }
-           if (amp || c != '>')
-           {
-               yaz_log(LOG_WARN, "d1: %d: Malformed tag", line);
-               return 0;
-           }
-           else
-               c = ampr (get_byte, fh, &amp);
-
-           /* End tag? */
-           if (end_tag)       
-           {
-               if (*tag == '\0')
-                   --level;        /* </> */
-               else
-               {                   /* </tag> */
-                   int i = level;
-                   while (i > 0)
-                   {
-                       parent = d1_stack[--i];
-                       if ((parent->which == DATA1N_root &&
-                            !strcmp(tag, parent->u.root.type)) ||
-                           (parent->which == DATA1N_tag &&
-                            !strcmp(tag, parent->u.tag.tag)))
-                       {
-                           level = i;
-                           break;
-                       }
-                   }
-                   if (i != level)
-                   {
-                       yaz_log (LOG_WARN, "%d: no begin tag for %s",
-                                line, tag);
-                       break;
-                   }
-               }
-                if (data1_is_xmlmode(dh))
-                {
-                    if (level <= 1)
-                        return d1_stack[0];
-                }
-                else
-                {
-                    if (level <= 0)
-                        return d1_stack[0];
-                }
-               continue;
-           }   
-           else if (!strcmp(tag, "var"))
-           {
-               char tclass[DATA1_MAX_SYMBOL], type[DATA1_MAX_SYMBOL];
-               data1_vartype *tp;
-               int val_offset;
-               
-               if (sscanf(args, "%s %s %n", tclass, type, &val_offset) != 2)
-               {
-                   yaz_log(LOG_WARN, "Malformed variant triple at '%s'", tag);
-                   continue;
-               }
-               if (!(tp =
-                     data1_getvartypebyct(dh,
-                                          parent->root->u.root.absyn->varset,
-                                          tclass, type)))
-                   continue;
-               /*
-                * If we're the first variant in this group, create a parent 
-                * variant, and insert it before the current variant.
-                */
-               if (parent->which != DATA1N_variant)
-               {
-                   res = data1_mk_node2 (dh, m, DATA1N_variant, parent);
-               }
-               else
-               {
-                   /*
-                    * now determine if one of our ancestor triples is of
-                    * same type. If so, we break here.
-                    */
-                   int i;
-                   for (i = level-1; d1_stack[i]->which==DATA1N_variant; --i)
-                       if (d1_stack[i]->u.variant.type == tp)
-                       {
-                           level = i;
-                           break;
-                       }
-                   res = data1_mk_node2 (dh, m, DATA1N_variant, parent);
-                   res->u.variant.type = tp;
-                   res->u.variant.value =
-                       data1_insert_string (dh, res, m, args + val_offset);
-               }
-           }
-           else 
-            {
-                
-                /* tag .. acquire our element in the abstract syntax */
-                if (level == 0)
-                {
-                    parent = data1_mk_root (dh, m, tag);
-                    res = d1_stack[level] = parent;
-
-                    if (data1_is_xmlmode(dh))
-                    {
-                        level++;
-                        res = data1_mk_tag (dh, m, tag, 0 /* attr */, parent);
-                        res->u.tag.attributes = xattr;
-                    }
-                }
-                else
-                {
-                    res = data1_mk_tag (dh, m, tag, 0 /* attr */, parent);
-                    res->u.tag.attributes = xattr;
-                }
-            }
-           d1_stack[level] = res;
-           d1_stack[level+1] = 0;
-           if (level < 250 && !null_tag)
-               ++level;
-       }
-       else /* != '<'... this is a body of text */
-       {
-           int len;
-           
-           if (level == 0)
-           {
-               c = ampr (get_byte, fh, &amp);
-               continue;
-           }
-           res = data1_mk_node2 (dh, m, DATA1N_data, parent);
-           res->u.data.what = DATA1I_xmltext;
-           res->u.data.formatted_text = 0;
-           d1_stack[level] = res;
-           
-           wrbuf_rewind(wrbuf);
-
-           while (amp || (c && c != '<'))
-           {
-               wrbuf_putc (wrbuf, c);
-               c = ampr (get_byte, fh, &amp);
-           }
-           len = wrbuf_len(wrbuf);
-
-           /* use local buffer of nmem if too large */
-           if (len >= DATA1_LOCALDATA)
-               res->u.data.data = (char*) nmem_malloc (m, len);
-           else
-               res->u.data.data = res->lbuf;
-       
-            if (len)
-                memcpy (res->u.data.data, wrbuf_buf(wrbuf), len);
-            else
-                res->u.data.data = 0;
-            res->u.data.len = len;
-       }
-    }
-    return 0;
-}
-
-int getc_mem (void *fh)
-{
-    const char **p = (const char **) fh;
-    if (**p)
-       return *(*p)++;
-    return 0;
-}
-
-data1_node *data1_read_node (data1_handle dh, const char **buf, NMEM m)
-{
-    WRBUF wrbuf = wrbuf_alloc();
-    data1_node *node;
-
-    node = data1_read_nodex(dh, m, getc_mem, (void *) (buf), wrbuf);
-    wrbuf_free (wrbuf, 1);
-    return node;
-}
-
-/*
- * Read a record in the native syntax.
- */
-data1_node *data1_read_record(data1_handle dh,
-                             int (*rf)(void *, char *, size_t), void *fh,
-                              NMEM m)
-{
-    int *size;
-    char **buf = data1_get_read_buf (dh, &size);
-    const char *bp;
-    int rd = 0, res;
-    
-    if (!*buf)
-       *buf = (char *)xmalloc(*size = 4096);
-    
-    for (;;)
-    {
-       if (rd + 2048 >= *size && !(*buf =(char *)xrealloc(*buf, *size *= 2)))
-           abort();
-       if ((res = (*rf)(fh, *buf + rd, 2048)) <= 0)
-       {
-           if (!res)
-           {
-               bp = *buf;
-               (*buf)[rd] = '\0';
-               return data1_read_node(dh, &bp, m);
-           }
-           else
-               return 0;
-       }
-       rd += res;
-    }
-}
-
-data1_node *data1_read_sgml (data1_handle dh, NMEM m, const char *buf)
-{
-    const char *bp = buf;
-    return data1_read_node (dh, &bp, m);
-}
-
-
-static int conv_item (NMEM m, yaz_iconv_t t, 
-                      WRBUF wrbuf, char *inbuf, size_t inlen)
-{
-    wrbuf_rewind (wrbuf);
-    if (wrbuf->size < 10)
-        wrbuf_grow (wrbuf, 10);
-    for (;;)
-    {
-        char *outbuf = wrbuf->buf + wrbuf->pos;
-        size_t outlen = wrbuf->size - wrbuf->pos;
-        if (yaz_iconv (t, &inbuf, &inlen, &outbuf, &outlen) ==
-            (size_t)(-1) && yaz_iconv_error(t) != YAZ_ICONV_E2BIG)
-        {
-            /* bad data. stop and skip conversion entirely */
-            return -1;
-        }
-        else if (inlen == 0)
-        {   /* finished converting */
-            wrbuf->pos = wrbuf->size - outlen;
-            break;
-        }
-        else
-        {
-            /* buffer too small: make sure we expand buffer */
-            wrbuf->pos = wrbuf->size - outlen;
-            wrbuf_grow(wrbuf, 20);
-        }
-    }
-    return 0;
-}
-
-static void data1_iconv_s (data1_handle dh, NMEM m, data1_node *n,
-                           yaz_iconv_t t, WRBUF wrbuf, const char *tocode)
-{
-    for (; n; n = n->next)
-    {
-        switch (n->which)
-        {
-        case DATA1N_data:
-        case DATA1N_comment:
-            if (conv_item (m, t, wrbuf, n->u.data.data, n->u.data.len) == 0)
-            {
-                n->u.data.data =
-                    data1_insert_string_n (dh, n, m, wrbuf->buf,
-                                           wrbuf->pos);
-                n->u.data.len = wrbuf->pos;
-            }
-            break;
-        case DATA1N_tag:
-            if (conv_item (m, t, wrbuf, n->u.tag.tag, strlen(n->u.tag.tag))
-                == 0)
-            {
-                n->u.tag.tag =
-                    data1_insert_string_n (dh, n, m, 
-                                           wrbuf->buf, wrbuf->pos);
-            }
-            if (n->u.tag.attributes)
-            {
-                data1_xattr *p;
-                for (p = n->u.tag.attributes; p; p = p->next)
-                {
-                    if (p->value &&
-                        conv_item(m, t, wrbuf, p->value, strlen(p->value))
-                        == 0)
-                    {
-                        wrbuf_puts (wrbuf, "");
-                        p->value = nmem_strdup (m, wrbuf->buf);
-                    }
-                }
-            }
-            break;
-        case DATA1N_preprocess:
-            if (strcmp(n->u.preprocess.target, "xml") == 0)
-            {
-                data1_xattr *p = n->u.preprocess.attributes;
-                for (; p; p = p->next)
-                    if (strcmp (p->name, "encoding") == 0)
-                        p->value = nmem_strdup (m, tocode);
-            }
-            break;
-        }
-        data1_iconv_s (dh, m, n->child, t, wrbuf, tocode);
-    }
-}
-
-const char *data1_get_encoding (data1_handle dh, data1_node *n)
-{
-    /* see if we have an xml header that specifies encoding */
-    if (n && n->child && n->child->which == DATA1N_preprocess &&
-        strcmp (n->child->u.preprocess.target, "xml") == 0)
-    {
-        data1_xattr *xp = n->child->u.preprocess.attributes;
-        for (; xp; xp = xp->next)
-            if (!strcmp (xp->name, "encoding") == 0)
-                return xp->value;
-    }
-    /* no encoding in header, so see if "encoding" was specified for abs */
-    if (n && n->which == DATA1N_root &&
-        n->u.root.absyn && n->u.root.absyn->encoding)
-        return n->u.root.absyn->encoding;
-    /* none of above, return a hard coded default */
-    return "ISO-8859-1";
-}
-
-int data1_iconv (data1_handle dh, NMEM m, data1_node *n,
-                  const char *tocode, 
-                  const char *fromcode)
-{
-    if (strcmp (tocode, fromcode))
-    {
-        WRBUF wrbuf = wrbuf_alloc();
-        yaz_iconv_t t = yaz_iconv_open (tocode, fromcode);
-        if (!t)
-            return -1;
-        data1_iconv_s (dh, m, n, t, wrbuf, tocode);
-        yaz_iconv_close (t);
-        wrbuf_free (wrbuf, 1);
-    }
-    return 0;
-}
diff --git a/retrieval/d1_soif.c b/retrieval/d1_soif.c
deleted file mode 100644 (file)
index 9737a32..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_soif.c,v $
- * Revision 1.4  1999-11-30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.3  1997/09/17 12:10:37  adam
- * YAZ version 1.4.
- *
- * Revision 1.2  1997/04/30 08:52:11  quinn
- * Null
- *
- * Revision 1.1  1996/10/08  10:43:20  quinn
- * Added SOIF syntax.
- *
- *
- */
-
-#include <yaz/wrbuf.h>
-#include <yaz/data1.h>
-
-/*
- * This module generates SOIF (Simple Object Interchange Format) records
- * from d1-nodes. nested elements are flattened out, depth first, by
- * concatenating the tag names at each level.
- */
-
-static int nodetoelement(data1_node *n, int select, char *prefix, WRBUF b)
-{
-    data1_node *c;
-    char tmp[1024];
-
-    for (c = n->child; c; c = c->next)
-    {
-       char *tag;
-
-       if (c->which == DATA1N_tag)
-       {
-           if (select && !c->u.tag.node_selected)
-               continue;
-           if (c->u.tag.element && c->u.tag.element->tag)
-               tag = c->u.tag.element->tag->names->name; /* first name */
-           else
-           tag = c->u.tag.tag; /* local string tag */
-
-           if (*prefix)
-               sprintf(tmp, "%s-%s", prefix, tag);
-           else
-               strcpy(tmp, tag);
-
-           if (nodetoelement(c, select, tmp, b) < 0)
-               return 0;
-       }
-       else if (c->which == DATA1N_data)
-       {
-           char *p = c->u.data.data;
-           int l = c->u.data.len;
-
-           wrbuf_write(b, prefix, strlen(prefix));
-
-           sprintf(tmp, "{%d}:\t", l);
-           wrbuf_write(b, tmp, strlen(tmp));
-           wrbuf_write(b, p, l);
-           wrbuf_putc(b, '\n');
-       }
-    }
-    return 0;
-}
-
-char *data1_nodetosoif (data1_handle dh, data1_node *n, int select, int *len)
-{
-    WRBUF b = data1_get_wrbuf (dh);
-    char buf[128];
-
-    wrbuf_rewind(b);
-    
-    if (n->which != DATA1N_root)
-       return 0;
-    sprintf(buf, "@%s{\n", n->u.root.type);
-    wrbuf_write(b, buf, strlen(buf));
-    if (nodetoelement(n, select, "", b))
-       return 0;
-    wrbuf_write(b, "}\n", 2);
-    *len = wrbuf_len(b);
-    return wrbuf_buf(b);
-}
diff --git a/retrieval/d1_sumout.c b/retrieval/d1_sumout.c
deleted file mode 100644 (file)
index 4c477d6..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_sumout.c,v $
- * Revision 1.5  1999-11-30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.4  1999/08/27 09:40:32  adam
- * Renamed logf function to yaz_log. Removed VC++ project files.
- *
- * Revision 1.3  1998/02/11 11:53:35  adam
- * Changed code so that it compiles as C++.
- *
- * Revision 1.2  1997/09/17 12:10:38  adam
- * YAZ version 1.4.
- *
- * Revision 1.1  1996/06/10 08:56:03  quinn
- * Work on Summary.
- *
- *
- */
-
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <yaz/log.h>
-#include <yaz/proto.h>
-#include <yaz/data1.h>
-
-static int *f_integer(data1_node *c, ODR o)
-{
-    int *r;
-    char intbuf[64];
-
-    if (!c->child || c->child->which != DATA1N_data ||
-       c->child->u.data.len > 63)
-       return 0;
-    r = (int *)odr_malloc(o, sizeof(*r));
-    sprintf(intbuf, "%.*s", 63, c->child->u.data.data);
-    *r = atoi(intbuf);
-    return r;
-}
-
-static char *f_string(data1_node *c, ODR o)
-{
-    char *r;
-
-    if (!c->child || c->child->which != DATA1N_data)
-       return 0;
-    r = (char *)odr_malloc(o, c->child->u.data.len+1);
-    memcpy(r, c->child->u.data.data, c->child->u.data.len);
-    r[c->child->u.data.len] = '\0';
-    return r;
-}
-
-Z_BriefBib *data1_nodetosummary (data1_handle dh, data1_node *n,
-                                int select, ODR o)
-{
-    Z_BriefBib *res = (Z_BriefBib *)odr_malloc(o, sizeof(*res));
-    data1_node *c;
-
-    assert(n->which == DATA1N_root);
-    if (strcmp(n->u.root.type, "summary"))
-    {
-       yaz_log(LOG_WARN, "Attempt to convert a non-summary record");
-       return 0;
-    }
-
-    res->title = "[UNKNOWN]";
-    res->author = 0;
-    res->callNumber = 0;
-    res->recordType = 0;
-    res->bibliographicLevel = 0;
-    res->num_format = 0;
-    res->format = 0;
-    res->publicationPlace = 0;
-    res->publicationDate = 0;
-    res->targetSystemKey = 0;
-    res->satisfyingElement = 0;
-    res->rank = 0;
-    res->documentId = 0;
-    res->abstract = 0;
-    res->otherInfo = 0;
-
-    for (c = n->child; c; c = c->next)
-    {
-       if (c->which != DATA1N_tag || !c->u.tag.element)
-       {
-           yaz_log(LOG_WARN, "Malformed element in Summary record");
-           return 0;
-       }
-       if (select && !c->u.tag.node_selected)
-           continue;
-       switch (c->u.tag.element->tag->value.numeric)
-       {
-           case 0: res->title = f_string(c, o); break;
-           case 1: res->author = f_string(c, o); break;
-           case 2: res->callNumber = f_string(c, o); break;
-           case 3: res->recordType = f_string(c, o); break;
-           case 4: res->bibliographicLevel = f_string(c, o); break;
-           case 5: abort();   /* TODO */
-           case 10: res->publicationPlace = f_string(c, o); break;
-           case 11: res->publicationDate = f_string(c, o); break;
-           case 12: res->targetSystemKey = f_string(c, o); break;
-           case 13: res->satisfyingElement = f_string(c, o); break;
-           case 14: res->rank = f_integer(c, o); break;
-           case 15: res->documentId = f_string(c, o); break;
-           case 16: res->abstract = f_string(c, o); break;
-           case 17: abort(); /* TODO */
-           default:
-               yaz_log(LOG_WARN, "Unknown element in Summary record.");
-       }
-    }
-    return res;
-}
diff --git a/retrieval/d1_sutrs.c b/retrieval/d1_sutrs.c
deleted file mode 100644 (file)
index ade87d0..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_sutrs.c,v 1.8 2002-10-08 22:18:23 adam Exp $
- *
- */
-
-#include <yaz/data1.h>
-
-#define NTOBUF_INDENT   2
-#define NTOBUF_MARGIN 75
-
-static int wordlen(char *b, int i)
-{
-    int l = 0;
-
-    while (i && !d1_isspace(*b))
-       l++, b++, i--;
-    return l;
-}
-
-static int nodetobuf(data1_node *n, int select, WRBUF b, int indent, int col)
-{
-    data1_node *c;
-    char line[1024];
-
-    for (c = n->child; c; c = c->next)
-    {
-       char *tag;
-
-       if (c->which == DATA1N_tag)
-       {
-           if (select && !c->u.tag.node_selected)
-               continue;
-           if (c->u.tag.element && c->u.tag.element->tag)
-               tag = c->u.tag.element->tag->names->name; /* first name */
-           else
-               tag = c->u.tag.tag; /* local string tag */
-           if (data1_matchstr(tag, "wellknown")) /* skip wellknown */
-           {
-               if (col)
-                   wrbuf_putc(b, '\n');
-               sprintf(line, "%*s%s:", indent * NTOBUF_INDENT, "", tag);
-               wrbuf_write(b, line, strlen(line));
-               col = strlen(line);
-           }
-           if (nodetobuf(c, select, b, indent+1, col) < 0)
-               return 0;
-       }
-       else if (c->which == DATA1N_data)
-       {
-           char *p = c->u.data.data;
-           int l = c->u.data.len;
-           int first = 0;
-
-           if ((c->u.data.what == DATA1I_text ||
-               c->u.data.what == DATA1I_xmltext) && c->u.data.formatted_text)
-           {
-               wrbuf_putc(b, '\n');
-               wrbuf_write(b, c->u.data.data, c->u.data.len);
-               sprintf(line, "%*s", indent * NTOBUF_INDENT, "");
-               wrbuf_write(b, line, strlen(line));
-               col = indent * NTOBUF_INDENT;
-           }
-           else if (c->u.data.what == DATA1I_text ||
-                    c->u.data.what == DATA1I_xmltext)
-           {
-               while (l)
-               {
-                   int wlen;
-
-                   while (l && d1_isspace(*p))
-                       p++, l--;
-                   if (!l)
-                       break;
-                   /* break if we'll cross margin and word is not too long */
-                   if (col + (wlen = wordlen(p, l)) > NTOBUF_MARGIN && wlen <
-                       NTOBUF_MARGIN - indent * NTOBUF_INDENT)
-                   {
-                       sprintf(line, "\n%*s", indent * NTOBUF_INDENT, "");
-                       wrbuf_write(b, line, strlen(line));
-                       col = indent * NTOBUF_INDENT;
-                       first = 1;
-                   }
-                   if (!first)
-                   {
-                       wrbuf_putc(b, ' ');
-                       col++;
-                   }
-                   while (l && !d1_isspace(*p))
-                   {
-                       if (col > NTOBUF_MARGIN)
-                       {
-                           wrbuf_putc(b, '=');
-                           wrbuf_putc(b, '\n');
-                           sprintf(line, "%*s", indent * NTOBUF_INDENT, "");
-                           wrbuf_write(b, line, strlen(line));
-                           col = indent * NTOBUF_INDENT;
-                       }
-                       wrbuf_putc(b, *p);
-                       p++;
-                       l--;
-                       col++;
-                   }
-                   first = 0;
-               }
-           }
-           else if (c->u.data.what == DATA1I_num)
-           {
-               wrbuf_putc(b, ' ');
-               wrbuf_write(b, c->u.data.data, c->u.data.len);
-           }
-       }
-    }
-    return 0;
-}
-
-/*
- * Return area containing SUTRS-formatted data. Ownership of this data
- * remains in this module, and the buffer is reused on next call. This may
- * need changing.
- */
-
-char *data1_nodetobuf (data1_handle dh, data1_node *n, int select, int *len)
-{
-    WRBUF b = data1_get_wrbuf (dh);
-
-    wrbuf_rewind(b);
-    if (nodetobuf(n, select, b, 0, 0))
-       return 0;
-    wrbuf_putc(b, '\n');
-    *len = wrbuf_len(b);
-    return wrbuf_buf(b);
-}
diff --git a/retrieval/d1_tagset.c b/retrieval/d1_tagset.c
deleted file mode 100644 (file)
index 1abd9fe..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_tagset.c,v $
- * Revision 1.15  2002-04-04 20:49:46  adam
- * New functions yaz_is_abspath, yaz_path_fopen_base
- *
- * Revision 1.14  1999/11/30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.13  1999/10/21 12:06:29  adam
- * Retrieval module no longer uses ctype.h - functions.
- *
- * Revision 1.12  1999/08/27 09:40:32  adam
- * Renamed logf function to yaz_log. Removed VC++ project files.
- *
- * Revision 1.11  1998/10/19 14:16:36  adam
- * Fixed data1_gettagbyname. Bug introduced by previous revision.
- *
- * Revision 1.10  1998/10/15 08:29:17  adam
- * Tag set type may be specified in reference to it using "tagset"
- * directive in .abs-files and "include" directive in .tag-files.
- *
- * Revision 1.9  1998/10/13 16:09:53  adam
- * Added support for arbitrary OID's for tagsets, schemas and attribute sets.
- * Added support for multiple attribute set references and tagset references
- * from an abstract syntax file.
- * Fixed many bad logs-calls in routines that read the various
- * specifications regarding data1 (*.abs,*.att,...) and made the messages
- * consistent whenever possible.
- * Added extra 'lineno' argument to function readconf_line.
- *
- * Revision 1.8  1998/05/18 13:07:07  adam
- * Changed the way attribute sets are handled by the retriaval module.
- * Extended Explain conversion / schema.
- * Modified server and client to work with ASN.1 compiled protocol handlers.
- *
- * Revision 1.7  1998/02/11 11:53:35  adam
- * Changed code so that it compiles as C++.
- *
- * Revision 1.6  1997/09/17 12:10:38  adam
- * YAZ version 1.4.
- *
- * 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
- * Making data1 look for tables in data1_tabpath
- *
- * Revision 1.2  1995/11/01  13:54:49  quinn
- * Minor adjustments
- *
- * Revision 1.1  1995/11/01  11:56:09  quinn
- * Added Retrieval (data management) functions en masse.
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-/*
- * We'll probably want to add some sort of hashed index to these lookup-
- * functions eventually.
- */
-
-data1_datatype data1_maptype (data1_handle dh, char *t)
-{
-    static struct
-    {
-       char *tname;
-       data1_datatype type;
-    } types[] =
-    {
-       {"structured", DATA1K_structured},
-       {"string", DATA1K_string},
-       {"numeric", DATA1K_numeric},
-       {"oid", DATA1K_oid},
-       {"bool", DATA1K_bool},
-       {"generalizedtime", DATA1K_generalizedtime},
-       {"intunit", DATA1K_intunit},
-       {"int", DATA1K_int},
-       {"octetstring", DATA1K_octetstring},
-       {"null", DATA1K_null},
-       {NULL, (data1_datatype) -1}
-    };
-    int i;
-
-    for (i = 0; types[i].tname; i++)
-       if (!data1_matchstr(types[i].tname, t))
-           return types[i].type;
-    return DATA1K_unknown;
-}
-
-data1_tag *data1_gettagbynum (data1_handle dh, data1_tagset *s,
-                             int type, int value)
-{
-    data1_tag *r;
-    
-    for (; s; s = s->next)
-    {
-       /* scan local set */
-       if (type == s->type)
-           for (r = s->tags; r; r = r->next)
-               if (r->which == DATA1T_numeric && r->value.numeric == value)
-                   return r;
-       /* scan included sets */
-       if (s->children &&
-           (r = data1_gettagbynum (dh, s->children, type, value)))
-           return r;
-    }
-    return 0;
-}
-
-data1_tag *data1_gettagbyname (data1_handle dh, data1_tagset *s,
-                              const char *name)
-{
-    data1_tag *r;
-
-    for (; s; s = s->next)
-    {
-       /* scan local set */
-       for (r = s->tags; r; r = r->next)
-       {
-           data1_name *np;
-
-           for (np = r->names; np; np = np->next)
-               if (!data1_matchstr(np->name, name))
-                   return r;
-       }
-       /* scan included sets */
-       if (s->children && (r = data1_gettagbyname (dh, s->children, name)))
-           return r;
-    }
-    return 0;
-}
-
-data1_tagset *data1_empty_tagset (data1_handle dh)
-{
-    data1_tagset *res =
-       (data1_tagset *) nmem_malloc(data1_nmem_get (dh), sizeof(*res));
-    res->name = 0;
-    res->reference = VAL_NONE;
-    res->tags = 0;
-    res->type = 0;
-    res->children = 0;
-    res->next = 0;
-    return res;
-}
-
-data1_tagset *data1_read_tagset (data1_handle dh, const char *file, int type)
-{
-    NMEM mem = data1_nmem_get (dh);
-    data1_tagset *res = 0;
-    data1_tagset **childp;
-    data1_tag **tagp;
-    FILE *f;
-    int lineno = 0;
-    int argc;
-    char *argv[50], line[512];
-
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "%s", file);
-       return 0;
-    }
-    res = data1_empty_tagset (dh);
-    res->type = type;
-    childp = &res->children;
-    tagp = &res->tags;
-
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-    {
-       char *cmd = *argv;
-       if (!strcmp(cmd, "tag"))
-       {
-           int value;
-           char *names, *type, *nm;
-           data1_tag *rr;
-           data1_name **npp;
-
-           if (argc != 4)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args to tag", file, lineno);
-               continue;
-           }
-           value = atoi(argv[1]);
-           names = argv[2];
-           type = argv[3];
-
-           rr = *tagp = (data1_tag *)nmem_malloc(mem, sizeof(*rr));
-           rr->tagset = res;
-           rr->next = 0;
-           rr->which = DATA1T_numeric;
-           rr->value.numeric = value;
-           /*
-            * how to deal with local numeric tags?
-            */
-
-           if (!(rr->kind = data1_maptype(dh, type)))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown datatype %s",
-                    file, lineno, type);
-               fclose(f);
-               return 0;
-           }
-           
-           /* read namelist */
-           nm = names;
-           npp = &rr->names;
-           do
-           {
-               char *e;
-
-               *npp = (data1_name *)nmem_malloc(mem, sizeof(**npp));
-               if ((e = strchr(nm, '/')))
-                   *(e++) = '\0';
-               (*npp)->name = nmem_strdup(mem, nm);
-               (*npp)->next = 0;
-               npp = &(*npp)->next;
-               nm = e;
-           }
-           while (nm);
-           tagp = &rr->next;
-       }
-       else if (!strcmp(cmd, "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args to name", file, lineno);
-               continue;
-           }
-           res->name = nmem_strdup(mem, argv[1]);
-       }
-       else if (!strcmp(cmd, "reference"))
-       {
-           char *name;
-           
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args to reference",
-                       file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if ((res->reference = oid_getvalbyname(name)) == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown tagset ref '%s'",
-                       file, lineno, name);
-               continue;
-           }
-       }
-       else if (!strcmp(cmd, "type"))
-       {
-           if (argc != 2)
-           {
-               yaz_log (LOG_WARN, "%s:%d: Bad # args to type", file, lineno);
-               continue;
-           }
-           if (!res->type)
-               res->type = atoi(argv[1]);
-       }
-       else if (!strcmp(cmd, "include"))
-       {
-           char *name;
-           int type = 0;
-
-           if (argc < 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args to include",
-                       file, lineno);
-               continue;
-           }
-           name = argv[1];
-           if (argc == 3)
-               type = atoi(argv[2]);
-           *childp = data1_read_tagset (dh, name, type);
-           if (!(*childp))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Inclusion failed for tagset %s",
-                       file, lineno, name);
-               continue;
-           }
-           childp = &(*childp)->next;
-       }
-       else
-       {
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'",
-                   file, lineno, cmd);
-       }
-    }
-    fclose(f);
-    return res;
-}
diff --git a/retrieval/d1_varset.c b/retrieval/d1_varset.c
deleted file mode 100644 (file)
index dbd1321..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (c) 1995-1999, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: d1_varset.c,v $
- * Revision 1.11  2002-04-04 20:49:46  adam
- * New functions yaz_is_abspath, yaz_path_fopen_base
- *
- * Revision 1.10  1999/11/30 13:47:12  adam
- * Improved installation. Moved header files to include/yaz.
- *
- * Revision 1.9  1999/08/27 09:40:32  adam
- * Renamed logf function to yaz_log. Removed VC++ project files.
- *
- * Revision 1.8  1998/10/13 16:09:54  adam
- * Added support for arbitrary OID's for tagsets, schemas and attribute sets.
- * Added support for multiple attribute set references and tagset references
- * from an abstract syntax file.
- * Fixed many bad logs-calls in routines that read the various
- * specifications regarding data1 (*.abs,*.att,...) and made the messages
- * consistent whenever possible.
- * Added extra 'lineno' argument to function readconf_line.
- *
- * Revision 1.7  1998/02/11 11:53:35  adam
- * Changed code so that it compiles as C++.
- *
- * Revision 1.6  1997/09/17 12:10:39  adam
- * YAZ version 1.4.
- *
- * 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
- * Making data1 look for tables in data1_tabpath
- *
- * Revision 1.2  1995/11/01  13:54:50  quinn
- * Minor adjustments
- *
- * Revision 1.1  1995/11/01  11:56:09  quinn
- * Added Retrieval (data management) functions en masse.
- *
- *
- */
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <yaz/oid.h>
-#include <yaz/log.h>
-#include <yaz/data1.h>
-
-data1_vartype *data1_getvartypebyct (data1_handle dh, data1_varset *set,
-                                    char *zclass, char *type)
-{
-    data1_varclass *c;
-    data1_vartype *t;
-
-    for (c = set->classes; c; c = c->next)
-       if (!data1_matchstr(c->name, zclass))
-       {
-           for (t = c->types; t; t = t->next)
-               if (!data1_matchstr(t->name, type))
-                   return t;
-           yaz_log(LOG_WARN, "Unknown variant type %s in class %s",
-                   type, zclass);
-           return 0;
-       }
-    yaz_log(LOG_WARN, "Unknown variant class %s", zclass);
-    return 0;
-}
-
-data1_varset *data1_read_varset (data1_handle dh, const char *file)
-{
-    NMEM mem = data1_nmem_get (dh);
-    data1_varset *res = (data1_varset *)nmem_malloc(mem, sizeof(*res));
-    data1_varclass **classp = &res->classes, *zclass = 0;
-    data1_vartype **typep = 0;
-    FILE *f;
-    int lineno = 0;
-    int argc;
-    char *argv[50],line[512];
-
-    res->name = 0;
-    res->reference = VAL_NONE;
-    res->classes = 0;
-
-    if (!(f = data1_path_fopen(dh, file, "r")))
-    {
-       yaz_log(LOG_WARN|LOG_ERRNO, "%s", file);
-       return 0;
-    }
-    while ((argc = readconf_line(f, &lineno, line, 512, argv, 50)))
-       if (!strcmp(argv[0], "class"))
-       {
-           data1_varclass *r;
-           
-           if (argc != 3)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # or args to class",
-                       file, lineno);
-               continue;
-           }
-           *classp = r = zclass = (data1_varclass *)
-               nmem_malloc(mem, sizeof(*r));
-           r->set = res;
-           r->zclass = atoi(argv[1]);
-           r->name = nmem_strdup(mem, argv[2]);
-           r->types = 0;
-           typep = &r->types;
-           r->next = 0;
-           classp = &r->next;
-       }
-       else if (!strcmp(argv[0], "type"))
-       {
-           data1_vartype *r;
-
-           if (!typep)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Directive class must precede type",
-                       file, lineno);
-               continue;
-           }
-           if (argc != 4)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # or args to type",
-                       file, lineno);
-               continue;
-           }
-           *typep = r = (data1_vartype *)nmem_malloc(mem, sizeof(*r));
-           r->name = nmem_strdup(mem, argv[2]);
-           r->zclass = zclass;
-           r->type = atoi(argv[1]);
-           if (!(r->datatype = data1_maptype (dh, argv[3])))
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown datatype '%s'",
-                       file, lineno, argv[3]);
-               fclose(f);
-               return 0;
-           }
-           r->next = 0;
-           typep = &r->next;
-       }
-       else if (!strcmp(argv[0], "name"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args for name",
-                       file, lineno);
-               continue;
-           }
-           res->name = nmem_strdup(mem, argv[1]);
-       }
-       else if (!strcmp(argv[0], "reference"))
-       {
-           if (argc != 2)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Bad # args for reference",
-                       file, lineno);
-               continue;
-           }
-           if ((res->reference = oid_getvalbyname(argv[1])) == VAL_NONE)
-           {
-               yaz_log(LOG_WARN, "%s:%d: Unknown reference '%s'",
-                       file, lineno, argv[1]);
-               continue;
-           }
-       }
-       else 
-           yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'",
-                   file, lineno, argv[0]);
-    
-    fclose(f);
-    return res;
-}
diff --git a/retrieval/d1_write.c b/retrieval/d1_write.c
deleted file mode 100644 (file)
index b884248..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 1995-2002, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Id: d1_write.c,v 1.19 2002-10-08 20:14:44 adam Exp $
- */
-
-#include <string.h>
-
-#include <yaz/data1.h>
-#include <yaz/wrbuf.h>
-
-#define IDSGML_MARGIN 75
-
-#define PRETTY_FORMAT 0
-
-static int wordlen(char *b, int max)
-{
-    int l = 0;
-
-    while (l < max && !d1_isspace(*b))
-       l++, b++;
-    return l;
-}
-
-static void indent (WRBUF b, int col)
-{
-    int i;
-    for (i = 0; i<col; i++)
-        wrbuf_putc (b, ' ');
-}
-
-static void wrbuf_write_cdata(WRBUF b, const char *msg, int len)
-{
-    int i;
-
-    for (i = 0; i < len; i++)
-    {
-        switch (msg[i])
-        {
-        case '"':
-            wrbuf_puts (b, "&quot;");
-            break;
-        case '\'':
-            wrbuf_puts (b, "&apos;");
-            break;
-        case '>':
-            wrbuf_puts (b, "&gt;");
-            break;
-        case '<':
-            wrbuf_puts (b, "&lt;");
-            break;
-        case '&':
-            wrbuf_puts (b, "&amp;");
-            break;
-        default:
-            wrbuf_putc(b, msg[i]);
-        }
-    }
-}
-
-static void wrbuf_put_cdata(WRBUF b, const char *msg)
-{
-    wrbuf_write_cdata (b, msg, strlen(msg));
-}
-
-static void wrbuf_put_xattr(WRBUF b, data1_xattr *p)
-{
-    for (; p; p = p->next)
-    {
-        wrbuf_putc (b, ' ');
-        if (p->what == DATA1I_xmltext)
-            wrbuf_puts (b, p->name);
-        else
-            wrbuf_put_cdata (b, p->name);
-        if (p->value)
-        {
-            wrbuf_putc (b, '=');
-            wrbuf_putc (b, '"');
-            if (p->what == DATA1I_text)
-                wrbuf_put_cdata (b, p->value);
-            else
-                wrbuf_puts (b, p->value);
-            wrbuf_putc (b, '"');
-        }
-    }
-}
-
-static int nodetoidsgml(data1_node *n, int select, WRBUF b, int col,
-                        int pretty_format)
-{
-    data1_node *c;
-
-    for (c = n->child; c; c = c->next)
-    {
-       char *tag;
-
-        if (c->which == DATA1N_preprocess)
-        {
-            data1_xattr *p;
-
-            if (pretty_format)
-                indent (b, col);
-           wrbuf_puts (b, "<?");
-            wrbuf_put_cdata (b, c->u.preprocess.target);
-            wrbuf_put_xattr (b, c->u.preprocess.attributes);
-            if (c->child)
-                wrbuf_puts(b, " ");
-            if (nodetoidsgml(c, select, b, (col > 40) ? 40 : col+2,
-                             pretty_format) < 0)
-                return -1;
-            wrbuf_puts (b, "?>\n");
-        }
-        else if (c->which == DATA1N_tag)
-       {
-           if (select && !c->u.tag.node_selected)
-               continue;
-            tag = c->u.tag.tag;
-           if (!data1_matchstr(tag, "wellknown")) /* skip wellknown */
-           {
-               if (nodetoidsgml(c, select, b, col, pretty_format) < 0)
-                   return -1;
-           }
-           else
-           {
-               data1_xattr *p;
-
-                if (pretty_format)
-                    indent (b, col);
-               wrbuf_puts (b, "<");    
-               wrbuf_put_cdata (b, tag);
-                wrbuf_put_xattr (b, c->u.tag.attributes);
-               wrbuf_puts(b, ">");
-                if (pretty_format)
-                    wrbuf_puts(b, "\n");
-               if (nodetoidsgml(c, select, b, (col > 40) ? 40 : col+2,
-                                 pretty_format) < 0)
-                   return -1;
-                if (pretty_format)
-                    indent (b, col);
-               wrbuf_puts(b, "</");
-               wrbuf_put_cdata(b, tag);
-               wrbuf_puts(b, ">");
-                if (pretty_format)
-                    wrbuf_puts (b, "\n");
-           }
-       }
-       else if (c->which == DATA1N_data || c->which == DATA1N_comment)
-       {
-           char *p = c->u.data.data;
-           int l = c->u.data.len;
-           int first = 1;
-           int lcol = col;
-
-            if (pretty_format && !c->u.data.formatted_text)
-                indent (b, col);
-            if (c->which == DATA1N_comment)
-                wrbuf_puts (b, "<!--");
-           switch (c->u.data.what)
-           {
-            case DATA1I_xmltext:
-               wrbuf_write(b, c->u.data.data, c->u.data.len);
-                break;
-           case DATA1I_text:
-                if (!pretty_format || c->u.data.formatted_text)
-                {
-                    wrbuf_write_cdata (b, p, l);
-                }
-                else
-                {
-                    while (l)
-                    {
-                        int wlen;
-                        
-                        while (l && d1_isspace(*p))
-                            p++, l--;
-                        if (!l)
-                            break;
-                        /* break if we cross margin and word is not too long */
-                        if (lcol + (wlen = wordlen(p, l)) > IDSGML_MARGIN &&
-                            wlen < IDSGML_MARGIN)
-                        {
-                            wrbuf_puts (b, "\n");
-                            indent (b, col);
-                            lcol = col;
-                            first = 1;
-                        }
-                        if (!first)
-                        {
-                            wrbuf_putc(b, ' ');
-                            lcol++;
-                        }
-                        while (l && !d1_isspace(*p))
-                        {
-                            wrbuf_putc(b, *p);
-                            p++;
-                            l--;
-                            lcol++;
-                        }
-                        first = 0;
-                    }
-                    wrbuf_puts(b, "\n");
-                }
-               break;
-           case DATA1I_num:
-               wrbuf_write_cdata(b, c->u.data.data, c->u.data.len);
-                if (pretty_format)
-                    wrbuf_puts(b, "\n");
-               break;
-           case DATA1I_oid:
-               wrbuf_write_cdata(b, c->u.data.data, c->u.data.len);
-                if (pretty_format)
-                    wrbuf_puts(b, "\n");
-           }
-            if (c->which == DATA1N_comment)
-            {
-                wrbuf_puts(b, "-->");
-                if (pretty_format)
-                    wrbuf_puts(b, "\n");
-            }
-       }
-    }
-    return 0;
-}
-
-char *data1_nodetoidsgml (data1_handle dh, data1_node *n, int select, int *len)
-{
-    WRBUF b = data1_get_wrbuf (dh);
-    
-    wrbuf_rewind(b);
-    
-    if (!data1_is_xmlmode (dh))
-    {
-        wrbuf_puts (b, "<");
-        wrbuf_puts (b, n->u.root.type);
-        wrbuf_puts (b, ">\n");
-    }
-    if (nodetoidsgml(n, select, b, 0, 0 /* no pretty format */))
-       return 0;
-    if (!data1_is_xmlmode (dh))
-    {
-        wrbuf_puts (b, "</");
-        wrbuf_puts (b, n->u.root.type);
-        wrbuf_puts (b, ">\n");
-    }
-    *len = wrbuf_len(b);
-    return wrbuf_buf(b);
-}
diff --git a/tab/Makefile.am b/tab/Makefile.am
deleted file mode 100644 (file)
index 2af20db..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-## $Id: Makefile.am,v 1.3 2000-05-18 11:55:47 adam Exp $
-
-tabdatadir = $(pkgdatadir)/tab
-tabdata_DATA = bib1.att dan1.att danmarc.abs danmarc.mar \
- explain.abs explain.att explain.tag generic.tag gils-a.est \
- gils-b.est gils-f.est gils-g.est \
- gils-summary.map gils-usmarc.map gils-variant.est gils.abs gils.att \
- gils.tag meta-b.est meta-usmarc.map meta.abs meta.tag summary.abs \
- summary.tag tagsetg.tag tagsetm.tag usmarc-b.est usmarc.abs usmarc.mar \
- usmarc.tag var1.var wais-b.est wais-variant.est wais.abs 
-
-EXTRA_DIST =  bib1.att dan1.att danmarc.abs danmarc.mar \
- explain.abs explain.att explain.tag generic.tag gils-a.est \
- gils-b.est gils-f.est gils-g.est \
- gils-summary.map gils-usmarc.map gils-variant.est gils.abs gils.att \
- gils.tag meta-b.est meta-usmarc.map meta.abs meta.tag summary.abs \
- summary.tag tagsetg.tag tagsetm.tag usmarc-b.est usmarc.abs usmarc.mar \
- usmarc.tag var1.var wais-b.est wais-variant.est wais.abs 
-
diff --git a/tab/bib1.att b/tab/bib1.att
deleted file mode 100644 (file)
index a0a1456..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-# $Id: bib1.att,v 1.9 1999-11-30 13:47:12 adam Exp $
-# Bib-1 Attribute Set
-name bib1
-reference Bib-1
-
-att 1               Personal-name
-att 2               Corporate-name
-att 3               Conference-name
-att 4               Title
-att 5               Title-series
-att 6               Title-uniform
-att 7               ISBN
-att 8               ISSN
-att 9               LC-card-number
-att 10              BNB-card-number
-att 11              BGF-number
-att 12              Local-number
-att 13              Dewey-classification
-att 14              UDC-classification
-att 15              Bliss-classification
-att 16              LC-call-number
-att 17              NLM-call-number
-att 18              NAL-call-number
-att 19              MOS-call-number
-att 20              Local-classification
-att 21              Subject-heading
-att 22              Subject-Rameau
-att 23              BDI-index-subject
-att 24              INSPEC-subject
-att 25              MESH-subject
-att 26              PA-subject
-att 27              LC-subject-heading
-att 28              RVM-subject-heading
-att 29              Local-subject-index
-att 30              Date
-att 31              Date-of-publication
-att 32              Date-of-acquisition
-att 33              Title-key
-att 34              Title-collective
-att 35              Title-parallel
-att 36              Title-cover
-att 37              Title-added-title-page
-att 38              Title-caption
-att 39              Title-running
-att 40              Title-spine
-att 41              Title-other-variant
-att 42              Title-former
-att 43              Title-abbreviated
-att 44              Title-expanded
-att 45              Subject-precis
-att 46              Subject-rswk
-att 47              Subject-subdivision
-att 48              Number-natl-biblio
-att 49              Number-legal-deposit
-att 50              Number-govt-pub
-att 51              Number-music-publisher
-att 52              Number-db
-att 53              Number-local-call
-att 54              Code-language
-att 55              Code-geographic
-att 56              Code-institution
-att 57              Name-and-title
-att 58              Name-geographic
-att 59              Place-publication
-att 60              CODEN
-att 61              Microform-generation
-att 62              Abstract
-att 63              Note
-att 1000            Author-title
-att 1001            Record-type
-att 1002            Name
-att 1003            Author
-att 1004            Author-name-personal
-att 1005            Author-name-corporate
-att 1006            Author-name-conference
-att 1007            Identifier-standard
-att 1008            Subject-LC-childrens
-att 1009            Subject-name-personal
-att 1010            Body-of-text
-att 1011            Date/time-added-to-db
-att 1012            Date/time-last-modified
-att 1013            Authority/format-id
-att 1014            Concept-text
-att 1015            Concept-reference
-att 1016            Any                1016,4,1005,62
-att 1017            Server-choice
-att 1018            Publisher
-att 1019            Record-source
-att 1020            Editor
-att 1021            Bib-level
-att 1022            Geographic-class
-att 1023            Indexed-by
-att 1024            Map-scale
-att 1025            Music-key
-att 1026            Related-periodical
-att 1027            Report-number
-att 1028            Stock-number
-att 1030            Thematic-number
-att 1031            Material-type
-att 1032            Doc-id
-att 1033            Host-item
-att 1034            Content-type
-att 1035            Anywhere
-att 1036            Author-Title-Subject
diff --git a/tab/dan1.att b/tab/dan1.att
deleted file mode 100644 (file)
index 6a96c1a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-name dan1
-reference 1.2.840.10003.3.15
-att 1         Classification-DK5-alfa-subdivision   # au Alfabetisk underdeling DK-5
-att 2         Subject-controlled                    # ke Kontrollerede emneord
-att 3         Subject-DBC                           # db DBC emneord
-att 4         Subject-DBC-non-fiction               # df DBC-faglitterære emneord
-att 5         Subject-DBC-fiction                   # ds DBC-skønlitterære emneord
-att 6         Subject-DBC-music                     # me DBC-Musikemneord
-att 7         Form-as-subject                       # fm Form betegnelse som emneord 
-att 8         Level-as-subject                      # nb Niveau-emneord
-att 9         Shelf-mark                            # po Opstillingselement
-att 10        Classification-DK5-number             # dk DK5
-att 11        Classification-as-shelf-mark          # ok Klassifikation som opstilling
-att 12        Obsolete-shelf-mark                   # gd Forældet dk-klassemærke
-att 13        Subject-FUI                           # fg FUI-Koder
-att 14        Catalogue-code                        # kk Katalogkode
-att 15        LIX-number                            # ix LIX
-att 16        Music-notation                        # nm Musikalsk notation
-att 17        Item-number                           # nr Numre
-att 18        Local-item-number                     # en Numre pÃ¥ ens materiale
-att 19        Previous-FAUST-code                   # tf Tidligere og lokale faustnumre 
-att 20        Title-host-publication                # lvx Værtspublikationstitel (uden nummer)
diff --git a/tab/danmarc.abs b/tab/danmarc.abs
deleted file mode 100644 (file)
index cf4aed1..0000000
+++ /dev/null
@@ -1,755 +0,0 @@
-name danmarc
-reference DANmarc
-attset bib1.att
-attset dan1.att
-
-marc danmarc.mar
-
-esetname B @
-esetname F @
-
-elm 10          DanBib-ID-nummer                    -
-elm 10/?        DanBib-ID-nummer                    Item-number
-elm 10/?/a      DanBib-ID-nummer                    Item-number
-elm 10/?/b      Dataproducentens-biblioteksnummer   -
-
-elm 11          ID-nummer-pÃ¥-hovedmaterialets-post  -
-elm 11/?        ID-nummer-pÃ¥-hovedmaterialets-post  -
-elm 11/?/a      ID-nummer-pÃ¥-hovedmaterialets-post  -
-
-elm 14          ID-nummer-pÃ¥-post-pÃ¥-højere-niveau  -
-elm 14/?        ID-nummer-pÃ¥-post-pÃ¥-højere-niveau  -
-elm 14/?/a      ID-nummer-pÃ¥-post-pÃ¥-højere-niveau  -
-elm 14/?/x      ID-nummer-pÃ¥-post-pÃ¥-højere-niveau  Item-number
-
-elm 15          ID-nummer-pÃ¥-post-pÃ¥-lavere-niveau  -
-elm 15/?        ID-nummer-pÃ¥-post-pÃ¥-lavere-niveau  Item-number
-elm 15/?/a      ID-nummer-pÃ¥-post-pÃ¥-lavere-niveau  Item-number
-
-elm 16          ID-nummer-pÃ¥-værtspublikation       -
-elm 16/?        ID-nummer-pÃ¥-værtspublikation       -
-elm 16/?/a      ID-nummer-pÃ¥-værtspublikation       -
-
-elm 17          ID-nummer-pÃ¥-første-udgave          -
-elm 17/?        ID-nummer-pÃ¥-første-udgave          Item-number,Local-item-number
-elm 17/?/a      ID-nummer-pÃ¥-første-udgave          Item-number,Local-item-number
-
-elm 18          ID-nummer-pÃ¥-anden-post-for-samme-materiale          -
-elm 18/?        ID-nummer-pÃ¥-anden-post-for-samme-materiale          Item-number,Local-item-number
-elm 18/?/a      ID-nummer-pÃ¥-anden-post-for-samme-materiale          Item-number,Local-item-number
-
-elm 20          Nationalbibliografisk-nummer        -
-elm 20/?        Nationalbibliografisk-nummer        Item-number
-elm 20/?/a      Landekode-for-nationalbibliografi   -
-elm 20/?/b      Nationalbibliografisk-nummer        Item-number
-
-elm 21          ISBN                                -
-elm 21/?        ISBN                                ISBN,Identifier-standard,Item-number
-elm 21/?/a      ISBN                                ISBN,Identifier-standard,Item-number
-elm 21/?/b      Tilføjelse                          -
-elm 21/?/c      Bindtype                            -
-elm 21/?/d      AnskaffelsesvilkÃ¥r/pris             -
-elm 21/?/n      Bestillingsnummer                   Item-number
-elm 21/?/x      Fejltryk-eller-fejlagtigt-anvendt-ISBN  ISBN,Identifier-standard,Item-number
-
-elm 22          ISSN                                -
-elm 22/?        ISSN                                ISBN,Identifier-standard,Item-number
-elm 22/?/a      ISSN                                ISBN,Identifier-standard,Item-number
-elm 22/?/b      Tilføjelse                          -
-elm 22/?/c      Bindtype                            -
-elm 22/?/d      AnskaffelsesvilkÃ¥r/pris             -
-elm 22/?/z      Fejlagtigt-tildelt-ISSN             ISBN,Identifier-standard,Item-number
-
-elm 28          ISMN                                -
-elm 28/?        ISMN                                ISBN,Identifier-standard,Item-number
-elm 28/?/a      ISMN                                ISBN,Identifier-standard,Item-number
-elm 28/?/b      Tilføjelse                          -
-elm 28/?/c      Bindtype                            -
-elm 28/?/d      AnskaffelsesvilkÃ¥r/pris             -
-elm 28/?/n      Bestillingsnummer                   Item-number
-
-elm 30          CODEN                               -
-elm 30/?        CODEN                               CODEN,Item-number
-elm 30/?/a      CODEN                               CODEN,Item-number
-
-elm 32          Kode-for-natio-eller-fagbibliografi -
-elm 32/?        Kode-for-natio-eller-fagbibliografi Catalogue-code
-elm 32/?/a      Kode-for-nationalbibliografi        Catalogue-code
-elm 32/?/x      Kode-for-fagbibliografi             Catalogue-code
-
-#elm 34          Kodede-matematiske-oplysninger      -
-#elm 34/?        Kodede-matematiske-oplysninger      Code-map-scale
-#elm 34/?/a      MÃ¥lestokstype                       Code-map-scale
-#elm 34/?/b      Konstant-lineær-vandret-mÃ¥lestok    Code-map-scale
-#elm 34/?/d      Koordinater                         Code-map-scale
-#elm 34/?/e      Koordinater                         Code-map-scale
-#elm 34/?/f      Koordinater                         Code-map-scale
-#elm 34/?/g      Koordinater                         Code-map-scale
-
-elm 38          Opstillingskode-for-børnelitteratur -
-elm 38/?        Opstillingskode-for-børnelitteratur -
-elm 38/?/a      Opstillingskode-for-børnelitteratur -
-
-elm 39          Opstillingskode-for-musikoptagelser -
-elm 39/?        Opstillingskode-for-musikoptagelser -
-elm 39/?/a      Opstillingskode-for-musikoptagelser -
-
-elm 41          Sprogkode                           -
-elm 41/?        Sprogkode                           -
-elm 41/?/a      Materialets-sprog                   Code-language
-#elm 41/?/b      Mellemoriginalens-sprog             Code-language-original
-#elm 41/?/c      Originaludgavens-sprog              Code-language-original
-elm 41/?/d      Sprog-i-resuméer                    Code-language
-elm 41/?/e      Sprog-i-mindre-dele-af-materialet   Code-language
-elm 41/?/p      Sprog-i-parallel-tekst              Code-language
-elm 41/?/u      Sprog-i-undertekster-til-film/video Code-language
-
-elm 42          Lix-tal                             -
-elm 42/?        Lix-tal                             -
-elm 42/?/a      Samlet-lix-tal                      LIX-number
-elm 42/?/b      Specifikation-af-lix-tal            -
-
-elm 43          Kode-for-geografisk-omrÃ¥de          -
-elm 43/?        Kode-for-geografisk-omrÃ¥de          -
-elm 43/?/a      Kode-for-geografisk-omrÃ¥de          -
-
-elm 44          Pædagogisk-fagkode                  -
-elm 44/?        Pædagogisk-fagkode                  Subject-FUI
-elm 44/?/a      Kode-for-skoleretning               Subject-FUI
-elm 44/?/b      Kode-for-fag-og-undervisningsmateriale  Subject-FUI
-
-elm 50          LC-klassifikation                   -
-#elm 50/?        LC-klassifikation                   Classification-LC
-elm 50/?        LC-klassifikation                   -
-elm 50/?/a      LC-klassifikation                   -
-elm 50/?/b      Materialenummer                     -
-
-elm 60          NLM-klassifikation                  -
-#elm 60/?        NLM-klassifikation                  Classification-NLM
-elm 60/?        NLM-klassifikation                  -
-elm 60/?/a      NLM-klassifikation                  -
-elm 60/?/b      Materialenummer                     -
-
-elm 70          NAL-klassifikation                  -
-#elm 70/?        NAL-klassifikation                  Classification-NAL
-elm 70/?        NAL-klassifikation                  -
-elm 70/?/a      Materialenummer                     -
-
-elm 79          DB-klassifikation                   -
-elm 79/?        DB-klassifikation                   -
-#elm 79/?        DB-klassifikation                   Classification-DB 
-elm 79/?/a      Systemkode                          -
-
-elm 80          UDK                                 -
-#elm 80/?        UDK                                 Classification-UDC
-elm 80/?        UDK                                 -
-elm 80/?/a      UDK-notation                        -
-
-elm 82          DDC                                 -
-elm 82/?        DDC                                 -
-#elm 82/?        DDC                                 Classification-Dewey
-elm 82/?/a      Basisnummer                         -
-elm 82/?/b      Udgivelse                           -
-elm 82/?/c      DDC-udgave                          -
-
-elm 83          Felt-083                            -
-elm 83/?        Felt-083                            -
-elm 83/?/a      Felt-083                            -
-elm 83/?/b      Felt-083                            -
-
-elm 85          BCM-klassifikation                  -
-elm 85/?        BCM-klassifikation                  -
-#elm 85/?        BCM-klassifikation                  Classification-BCM
-elm 85/?/a      BCM-klassifikation                  -
-elm 85/?/b      BCM-klassifikation                  -
-elm 85/?/c      BCM-klassifikation                  -
-
-elm 87          Lokal-klassifikationsnotation-1     -
-elm 87/?        Lokal-klassifikationsnotation-1     -
-#elm 87/?/a      Lokal-klassifikationsnotation-1     Classification-local
-elm 87/?/b      Lokal-klassifikationsnotation-1     -
-
-elm 88          Lokal-klassifikationsnotation-2     -
-elm 88/?        Lokal-klassifikationsnotation-2     -
-#elm 88/?/a      Lokal-klassifikationsnotation-2     Classification-local
-elm 88/?/b      Lokal-klassifikationsnotation-2     -
-elm 88/?/c      Lokal-klassifikationsnotation-2     -
-elm 88/?/d      Lokal-klassifikationsnotation-2     -
-elm 88/?/e      Lokal-klassifikationsnotation-2     -
-elm 88/?/f      Lokal-klassifikationsnotation-2     -
-elm 88/?/n      Lokal-klassifikationsnotation-2     -
-elm 88/?/p      Lokal-klassifikationsnotation-2     -
-elm 88/?/q      Lokal-klassifikationsnotation-2     -
-elm 88/?/t      Lokal-klassifikationsnotation-2     -
-elm 88/?/u      Lokal-klassifikationsnotation-2     -
-
-elm 89          Lokal-klassifikationsnotation-3     -
-elm 89/?        Lokal-klassifikationsnotation-3     -
-#elm 89/?/a      Lokal-klassifikationsnotation-3     Classification-local
-elm 89/?/b      Lokal-klassifikationsnotation-3     -
-elm 89/?/c      Lokal-klassifikationsnotation-3     -
-
-elm 96          Lokal-opstillingssignatur           -
-elm 96/?        Lokal-opstillingssignatur           -
-elm 96/?/a      Opstilling           -
-elm 96/?/n      Lokal-opstillingssignatur           -
-elm 96/?/z      Lokaliseringskode                   -
-
-elm 100         Personnavn                  -
-elm 100/?       Personnavn                  Personal-name:w,Personal-name:p,Shelf-mark
-#elm 100/?/a     Efternavn/fornavn-alene     Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark
-#elm 100/?/c     FødselsÃ¥r                   Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark
-#elm 100/?/f     Tilføjelse                  Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark
-#elm 100/?/h     Fornavn                     Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark
-#elm 100/?/k     Fuldt-udskrevet-fornavn     Personal-name:w,Personal-name:p,Personal-name-personal:w,Personal-name-personal:p,Shelf-mark
-
-elm 110         Korporationsnavn-opstillingselement     -
-elm 110/?       Korporationsnavn-opstillingselement     Personal-name:w,Personal-name:p,Corporate-name:w,Corporate-name:p,Shelf-mark
-#elm 110/?/a     Korporationsnavn                        Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-#elm 110/?/c     Underkorporation                        Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-#elm 110/?/e     Tilføjelse                              Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-#elm 110/?/i     Nummer-pÃ¥-konference                    Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-#elm 110/?/j     Sted-for-konference                     Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-#elm 110/?/k     Ã…r-for-konference                       Personal-name:w,Personal-name:p,Personal-name-corporate:w,Personal-name-corporate:p,Shelf-mark
-
-elm 210         Forkortet-nøgletitel                    -
-elm 210/?       Forkortet-nøgletitel                    Title-key,Title,Title:p
-elm 210/?/a     Forkortet-nøgletitel                    Title-key,Title,Title:p
-elm 210/?/b     Forkortet-identificerende-tilføjelse    Title-key,Title,Title:p
-
-elm 222         Nøgletitel                  -
-elm 222/?       Nøgletitel                  Title-key,Title,Title:p
-elm 222/?/a     Nøgletitel                  Title-key,Title,Title:p
-elm 222/?/b     Identificerende-tilføjelse  Title-key,Title,Title:p
-
-elm 239         Uniform-titel/standardtitel-opstillingselement  -
-elm 239/?       Uniform-titel/standardtitel-opstillingselement  Title-uniform,Title,Title:p
-elm 239/?/t     Uniform-titel                                   Title-uniform,Title,Title:p
-elm 239/?/u     Almindeligt-kendt-tilnavn                       Title-uniform,Title,Title:p
-elm 239/?/v     Uddragstitel                                    Title-uniform,Title,Title:p
-elm 239/?/Ø     Uniform-titel/standardtitel-opstillingselement  -
-elm 239/?/ø     Identificerende-tilføjelser                     Title-uniform,Title
-
-elm 240         Uniform-titel-opstillingselement    -
-elm 240/?       Uniform-titel-opstillingselement    Title-uniform,Title,Title:p
-elm 240/?/a     Uniform-titel                       Title-uniform,Title,Title:p
-elm 240/?/j     Andet-identificerende-element       Title-uniform,Title,Title:p
-elm 240/?/r     Sprog-i-oversættelse/version        -
-elm 240/?/u     UdgivelsesÃ¥r                        -
-elm 240/?/ø     Identificerende-tilføjelser         Title-uniform,Title
-
-elm 241         Originaltitel           -
-elm 241/?       Originaltitel           Title,Title:p
-elm 241/?/a     Originaltitel           Title,Title:p
-elm 241/?/r     Sprog                   -
-
-elm 245         Originaltitel-og-ophavsangivelse            -
-elm 245/?       Originaltitel-og-ophavsangivelse            Title,Title:p
-elm 245/?/A     Originaltitel-og-ophavsangivelse            -
-elm 245/?/G     Originaltitel-og-ophavsangivelse            -
-elm 245/?/a     Titel                                       Title,Title:p
-elm 245/?/b     Rest-af-titel-eller-alternativ-titel        Title,Title:p
-elm 245/?/c     Undertitel-og-anden-titelinformation        Title,Title:p
-elm 245/?/e     Ophavsangivelser-opslag                     -
-elm 245/?/f     Ophavsangivelser                            -
-elm 245/?/g     Numerisk-eller-alfabetisk-betegnelse-for-bind                       Title,Title:p
-elm 245/?/i     Anden-primær/sekundær-ophavsangivelse-kun-i-nationalbibliogafien    -
-elm 245/?/j     Anden-primær/sekundær-ophavsangivelse-ikke-i-nationalbibliogafien   -
-elm 245/?/o     Titel-pÃ¥-supplement/sektion                  -
-elm 245/?/p     Paralleltitel                               Title-parallel,Title,Title:p
-elm 245/?/s     Parallel-undertitel                         Title-parallel,Title,Title:p
-elm 245/?/u     Markant-undertitel                          Title,Title:p
-elm 245/?/x     Hovedtitel-pÃ¥-tilføjet-værk-af-andet-ophav  Title,Title:p
-elm 245/?/y     Titel-pÃ¥-supplement                         Title,Title:p
-elm 245/?/Ø     Originaltitel-og-ophavsangivelse            -
-elm 245/?/æ     Identificerende-ophavsangivelse-til-titel   -
-elm 245/?/ø     Identificerende-tilføjelser-til-titel       -
-
-elm 248         Bindspecifikation                       -
-elm 248/?       Bindspecifikation                       Title
-elm 248/?/a     Bindtitel/supplementstitel              Title,Title:p
-elm 248/?/c     Undertitel-og-anden-titelinformation    Title,Title:p
-elm 248/?/e     Ophavsangivelse                         -
-elm 248/?/g     Bindnummer/supplementsbetegnelse        Title
-elm 248/?/j     UdgivelsesÃ¥r                            -
-elm 248/?/l     Generel-note                            Note
-elm 248/?/w     Udgavebetegnelse                        -
-
-elm 250         Udgavebetegnelse                        -
-elm 250/?       Udgavebetegnelse                        -
-elm 250/?/a     Udgavebetegnelse                        -
-elm 250/?/b     Kort-udgavebetegnelse/sonderingselement -
-elm 250/?/c     Ophavsangivelse-opslag                  -
-elm 250/?/d     Ophavsangivelse                         -
-elm 250/?/x     Oplagsbetegnelse                        -
-
-elm 255         Nummereringer-og-dateringer   -
-elm 255/?       Nummereringer-og-dateringer   -
-elm 255/?/a     Nummereringer-og-dateringer   -
-
-elm 256         Matematiske-oplysninger-for-kartografiske-materialer    -
-#elm 256/?       Matematiske-oplysninger-for-kartografiske-materialer    Code-map-scale
-#elm 256/?/a     MÃ¥lestok                                                Code-map-scale
-#elm 256/?/c     Projektion                                              Code-map-scale
-
-elm 260         Publicering/distribution        -
-elm 260/?       Publicering/distribution        -
-elm 260/?/a     Hjemsted-for-forlag             Place-publication
-elm 260/?/b     Navn-pÃ¥-forlag                  Publisher
-elm 260/?/c     UdgivelsesÃ¥r                    Date-of-Publication
-elm 260/?/d     Adresse-pÃ¥-forlag               -
-elm 260/?/e     Funktionsangivelse-pÃ¥-forlag    -
-elm 260/?/f     Hjemsted-for-distributør        Place-publication
-elm 260/?/g     Navn-pÃ¥-distributør             -
-elm 260/?/k     Trykkerioplysninger             -
-elm 260/?/p     Navn-pÃ¥-forlag/distributør-pÃ¥-andet-sprog/alfabet   publisher
-
-elm 300         Fysisk-beskrivelse                          -
-elm 300/?       Fysisk-beskrivelse                          -
-elm 300/?/D     Fysisk-beskrivelse                          -
-elm 300/?/a     Omfang-uden-specifik-materialebetegnelse    -
-elm 300/?/b     Yderligere-fysisk-beskrivelse               -
-elm 300/?/c     Størrelse                                   -
-elm 300/?/d     Bilag                                       -
-elm 300/?/e     Tekniske-oplysninger                        -
-elm 300/?/l     Spilletid                                   -
-elm 300/?/n     Specifik-materialebetegnelse                -
-
-elm 440         Seriebetegnelse-i-materialets-form                  -
-elm 440/?       Seriebetegnelse-i-materialets-form                  -
-elm 440/?/A     Seriebetegnelse-i-materialets-form                  -
-elm 440/?/V     Seriebetegnelse-i-materialets-form                  -
-elm 440/?/a     Seriens-hovedtitel                                  Title,Title-series,Title:p
-elm 440/?/c     Undertitel-eller-anden-titelinformation             Title,Title-series,Title:p
-elm 440/?/e     Ophavsangivelse                                     -
-elm 440/?/n     Numerisk/alfabetisk-betegnelse-for-sektion          Title,Title-series
-elm 440/?/o     Titel-pÃ¥-sektion                                    Title,Title-series,Title:p
-elm 440/?/p     Seriens-paralleltitel                               Title,Title-series,Title:p
-elm 440/?/v     Nummerering-og-datering-i-serien                    Title,Title-series
-elm 440/?/y     Seriebetegnelse-i-materialets-form                  -
-elm 440/?/z     Seriens-ISSN                                        ISSN
-elm 440/?/Ã¥     Seriebetegnelse-i-materialets-form                  -
-elm 440/?/æ     Identificerende-ophavsangivelse-til-seriens-titel   -
-elm 440/?/ø     Identificerende-tilføjelse-til-seriens-titel        Title,Title-series,Title:p
-
-elm 500         Periodicums-frekvens    -
-elm 500/?       Periodicums-frekvens    -
-elm 500/?/a     Periodicums-frekvens    -
-
-elm 501         Systemkrav/adgangsmÃ¥de  -
-elm 501/?       Systemkrav              Note
-elm 501/?/a     AdgangsmÃ¥de             Note
-
-elm 502         Originaltitel/oversættelse  -
-elm 502/?       Originaltitel/oversættelse  Note
-elm 502/?/a     Originaltitel/oversættelse  Note
-
-elm 504         Indholdsbeskrivelse     -
-elm 504/?       Indholdsbeskrivelse     Note
-elm 504/?/a     Indholdsbeskrivelse     Note
-
-elm 505         Art/form                -
-elm 505/?       Art/form                Note
-elm 505/?/a     Art/form                Note
-
-elm 506         Disputats/afhandling    -
-elm 506/?       Disputats/afhandling    Note
-elm 506/?/a     Disputats/afhandling    Note
-
-
-elm 507         Anledning-til-udgivelse -
-elm 507/?       Anledning-til-udgivelse Note
-elm 507/?/a     Anledning-til-udgivelse Note
-
-elm 508         Sprog-og-alfabet        -
-elm 508/?       Sprog-og-alfabet        Note
-elm 508/?/a     Sprog-og-alfabet        Note
-
-elm 509         Besætning               -
-elm 509/?       Besætning               Note
-elm 509/?/a     Besætning               Note
-
-elm 512         Beskrivelse                     -
-elm 512/?       Beskrivelse                     -
-elm 512/?/a     Generel-note-til-beskrivelse    Note
-elm 512/?/b     Supplerende-tekst               -
-elm 512/?/e     Ophavsangivelse                 -
-elm 512/?/i     Indledende-tekst                -
-elm 512/?/t     Titel                           Title,Title:p
-
-elm 513         Fælles-ophavsangivelse  -
-elm 513/?       Fælles-ophavsangivelse  -
-elm 513/?/e     Primær-ophavsangivelse  -
-
-elm 517         MÃ¥lgruppe-og-anvendelighed  -
-elm 517/?       MÃ¥lgruppe-og-anvendelighed  Note
-elm 517/?/a     MÃ¥lgruppe-og-anvendelighed  Note
-
-elm 520         Værkets-bibliografiske-historie -
-elm 520/?       Værkets-bibliografiske-historie -
-elm 520/?/a     Værkets-bibliografiske-historie -
-elm 520/?/b     Supplerende-tekst               -
-elm 520/?/i     Indledende-tekst                -
-elm 520/?/t     Titel                           Title,Title:p
-
-elm 521         Udgavens-oplag          -
-elm 521/?       Udgavens-oplag          -
-elm 521/?/a     Oplagsbetegnelse        -
-elm 521/?/b     Seneste-oplag           -
-elm 521/?/c     Oplagets-udgivelsesÃ¥r   Date-of-publication
-
-elm 526         Sammenhæng-med-andre-værker -
-elm 526/?       Sammenhæng-med-andre-værker -
-elm 526/?/a     Sammenhæng-med-andre-værker Note
-elm 526/?/b     Supplerende-tekst           -
-elm 526/?/d     Ophavsangivelse-foran-titel -
-elm 526/?/e     Ophavsangivelse             -
-elm 526/?/i     Indledende-tekst            -
-elm 526/?/t     Titel                       Title,Title:p
-
-elm 530         Indholdsnote            -
-elm 530/?       Indholdsnote            -
-elm 530/?/a     Indholdsnote            Note
-elm 530/?/e     Ophavsangivelse         -
-elm 530/?/t     Titel                   Title,Title:p
-
-elm 531         Indledende-tekst-til-maskingenereret-indholdsnote   -
-elm 531/?       Indledende-tekst-til-maskingenereret-indholdsnote   -
-elm 531/?/a     Indledende-tekst-til-maskingenereret-indholdsnote   -
-
-elm 532         Litteraturhenvisninger-og-registre    -
-elm 532/?       Litteraturhenvisninger-og-registre    -
-elm 532/?/a     Litteraturhenvisninger-og-registre    -
-
-elm 534         Partielt-indhold        -
-elm 534/?       Partielt-indhold        Note
-elm 534/?/a     Partielt-indhold        Note
-
-elm 538         Numre-der-indgÃ¥r-i-materialet   -
-elm 538/?       Numre-der-indgÃ¥r-i-materialet   Item-number
-elm 538/?/a     Nummer                          Item-number
-elm 538/?/b     Editionsnummer                  Item-number
-elm 538/?/c     Pladenummer                     Item-number
-elm 538/?/d     Editions-og-pladenummer         Item-number
-elm 538/?/f     Forlag                          Publisher
-elm 538/?/g     Forlagsnummer                   Item-number
-
-elm 539         Grundlaget-for-katalogiseringen -
-elm 539/?       Grundlaget-for-katalogiseringen -
-elm 539/?/a     Grundlaget-for-katalogiseringen -
-
-elm 557         Periodicum-som-værtspublikation-for-I-analyse   -
-elm 557/?       Periodicum-som-værtspublikation-for-I-analyse   -
-elm 557/?/V     Periodicum-som-værtspublikation-for-I-analyse   -
-elm 557/?/a     Titel                                           - # Title,Title-host-item,Title:p
-elm 557/?/j     UdgivelsesÃ¥r                                    -
-elm 557/?/v     Nummerering/datering                            - # Title,Title-host-item,Title:p
-
-elm 559         Generel-note            -
-elm 559/?       Generel-note            -
-elm 559/?/a     Generel-note            Note
-
-elm 600         Personnavn-emneord      -
-#elm 600/?       Personnavn-emneord      Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/a     Efternavn/fornavn-alene Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/c     FødselsÃ¥r               Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/e     Romertal                Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/f     Tilføjelse              Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/h     Fornavn                 Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/k     Fuldt-udskrevet-fornavn Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/x     Underdeling-emne/art    Subject-controlled,Subject-name-personal,Subject:p
-#elm 600/?/Ã¥     Personnavn-emneord      Subject-controlled,Subject-name-personal,Subject:p
-
-elm 610         Korporationsnavn-emneord    -
-#elm 610/?       Korporationsnavn-emneord    Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/a     Korporationsnavn            Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/c     Underkorporation            Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/e     Tilføjelse                  Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/t     Titel                       Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/x     Underdeling-emne/art        Subject-controlled,Subject-name-corporate,Subject:p
-#elm 610/?/y     Underdeling-periode         Subject-controlled,Subject-name-corporate,Subject:p
-
-elm 621         Emnedata-for-kartografisk-materiale -
-#elm 621/?       Emnedata-for-kartografisk-materiale Subject
-elm 621/?       Emnedata-for-kartografisk-materiale    -
-#elm 621/?/a     Stednavn Subject
-#elm 621/?/b     Land/stat Subject
-
-elm 630         Kontrolleret-emneord    -
-#elm 630/?       Kontrolleret-emneord    Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p
-#elm 630/?/a     Kontrolleret-emneord    Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p
-#elm 630/?/b     Andre-bibliotekers-kontrollerede-emneord    Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p
-#
-#elm 631         Ukontrolleret-emneord   -
-#elm 631/?       Ukontrolleret-emneord   Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p
-#elm 631/?/a     Ukontrolleret-emneord   Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p
-#elm 631/?/b     Andre-bibliotekers-ukontrollerede-emneord   Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p
-#elm 631/?/f     Ukontrolleret-faglitterært-emneord          Subject-controlled,Subject-uncontrolled,Subject:p,Subject-uncontrolled:p
-#
-elm 633         Stednavn                -
-#elm 633/?       Stednavn                Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p
-#elm 633/?/a     Stednavn                Subject-controlled,Subject-controlled,Subject:p,Subject-controlled:p
-#
-elm 645         Titel                   -
-elm 645/?       Titel                   Subject-controlled,Subject-controlled:p
-elm 645/?/c     Titel                   Subject-controlled,Subject-controlled:p
-
-elm 650         LC-emneord              subject-controlled
-#elm 650/?       LC-emneord              Subject-controlled
-#elm 650/?/a     LC-emneord              Subject-controlled
-#elm 650/?/v     LC-emneord              -
-#elm 650/?/x     Underdeling-emne/art    Subject-controlled
-#elm 650/?/y     Underdeling-periode     Subject
-#elm 650/?/z     Underdeling-lokalitet   Subject
-
-elm 651         LC-geografisk-emneord   subject-controlled
-#elm 651/?       LC-geografisk-emneord   Subject
-#elm 651/?/a     LC-geografisk-emneord   Subject
-#elm 651/?/x     Underdeling-emne/art    Subject
-#elm 651/?/z     Underdeling-lokalitet   Subject
-
-elm 652         DK5-klassemærke         -
-elm 652/?       DK5-klassemærke         -
-elm 652/?/a     Efternavn/navn/korporationsnavn-som-alfabetisk-underdeling  Classification-DK5-alfa-subdivision
-elm 652/?/b     Andet-som-alfabetisk-underdeling                    Classification-DK5-alfa-subdivision,Subject-controlled
-elm 652/?/c     FødselsÃ¥r                                           Classification-DK5-alfa-subdivision
-elm 652/?/h     Fornavn                                             Classification-DK5-alfa-subdivision,Subject-controlled
-elm 652/?/i     Analytisk-klassemærke                               Classification-DK5-number
-elm 652/?/m     Opstillings-og-hovedplacering                       Classification-DK5-number,Classification-as-shelf-mark
-elm 652/?/n     Nationalbibliografisk-hovedplacering                Classification-DK5-number
-elm 652/?/o     Opstillingsklassemærkeog-bibliotekshovedplacering   Classification-DK5-number
-elm 652/?/p     Biplacering                                         Classification-DK5-number
-elm 652/?/q     Nationalbibliografisk-biplacering                   Classification-DK5-number
-elm 652/?/r     Biblioteksbiplacering                               Classification-DK5-number
-elm 652/?/v     Tilføjede-cifre-efter-kolon                         -
-elm 652/?/z     Tilføjede-cifre-efter-bindestreg                    -
-elm 652/?/Ã¥     Feltnumerator                                       -
-
-elm 654         Forældet-DK5-klassemærke    -
-#elm 654/?       Forældet-DK5-klassemærke    Classification
-#elm 654/?/p     Biplacering                 Classification
-
-elm 660         MeSH-emneord            -
-elm 660/?       MeSH-emneord            Subject-controlled,Subject-controlled,MESH-Subject
-elm 660/?/a     MeSH-emneord            Subject-controlled,Subject-controlled,MESH-Subject
-elm 660/?/x     Generel-underdeling     Subject-controlled,Subject-controlled,MESH-Subject
-
-elm 661         Europæisk-pædagogisk-tesaurus   -
-elm 661/?       Europæisk-pædagogisk-tesaurus   Subject-controlled,Subject-controlled
-elm 661/?/a     Kontrolleret-dansk-emneord      Subject-controlled,Subject-controlled
-elm 661/?/b     Kontrolleret-engelsk-emneord    Subject-controlled,Subject-controlled
-elm 661/?/c     Ukontrolleret-dansk-emneord     Subject-controlled,Subject-controlled
-
-elm 666         Kontrolleret-DBC-emneord            -
-elm 666/?       Kontrolleret-DBC-emneord            -
-elm 666/?/e     Stednavn-som-emneord-faglitteratur  Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled
-elm 666/?/f     Kontrolleret-faglitterært-emneord   Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled
-elm 666/?/i     Tidsangivelse                       Subject-DBC,Subject-controlled,Subject-DBC-non-fiction,Subject-controlled
-elm 666/?/l     Stednavn                            Subject-DBC,Subject-controlled
-elm 666/?/m     Musikalsk-genre-som-emneord         Subject-DBC,Subject-controlled,Subject-DBC-music
-elm 666/?/n     Musikalsk-besætning-som-emneord     Subject-DBC,Subject-controlled,Subject-DBC-music
-elm 666/?/o     Formbetegnelse                      Subject-DBC,Subject-controlled,Form-as-subject
-elm 666/?/p     Periodebetegnelse                   Subject-DBC,Subject-controlled,Subject-DBC-music
-elm 666/?/q     Stednavn-som-emneord-skønlitteratur Subject-DBC,Subject-controlled,Subject-DBC-fiction,Subject-controlled
-elm 666/?/s     Kontrolleret-skønlitterært-emneord  Subject-DBC,Subject-controlled,Subject-DBC-fiction,Subject-controlled
-elm 666/?/u     Niveau/brugerkategori               Subject-DBC,Subject-controlled,Level-as-subject
-elm 666/?/Ã¥     Kontrolleret-DBC-emneord            Subject-DBC,Subject-controlled
-
-elm 668         Genrebetegnelse         -
-elm 668/?       Genrebetegnelse         Subject-controlled
-elm 668/?/a     Genrebetegnelse         Subject-controlled
-elm 668/?/b     Underdeling             Subject-controlled
-
-#elm 670         NAL-emneord             -
-#elm 670/?       NAL-emneord             Subject-NAL
-#elm 670/?/a     NAL-emneord             Subject
-
-elm 690         COMPASS-emneord         -
-elm 690/?       COMPASS-emneord         - # Subject-controlled,Subject-COMPASS
-elm 690/?/a     Enkeltord              - # Subject-controlled,Subject-COMPASS
-elm 690/?/b     Flere-ord              - # Subject-controlled,Subject-COMPASS
-elm 690/?/c     Forbindende-tekst       -
-elm 690/?/d     Underdeling-periode     - # Subject-controlled,Subject-COMPASS
-elm 690/?/h     COMPASS-emneord         - # Subject-controlled,Subject-COMPASS
-elm 690/?/i     COMPASS-emneord         -
-elm 690/?/m     COMPASS-emneord         -
-elm 690/?/v     COMPASS-emneord         -
-elm 690/?/w     COMPASS-emneord         -
-elm 690/?/x     COMPASS-emneord         -
-elm 690/?/y     COMPASS-emneord         -
-elm 690/?/z     COMPASS-emneord         -
-
-elm 700         Personnavn              -
-elm 700/?       Personnavn              Personal-name
-elm 700/?/A     Personnavn              Personal-name
-elm 700/?/a     Efternavn/fornavn-alene Personal-name
-elm 700/?/b     Funktionsbetegnelse -
-elm 700/?/c     FødselsÃ¥r               Personal-name
-elm 700/?/f     Tilføjelse              Personal-name
-elm 700/?/h     Fornavn                 Personal-name
-elm 700/?/k     Fuldt-udskrevet-fornavn Personal-name
-elm 700/?/Ã¥     Personnavn              -
-
-elm 710         Korporationsnavn        -
-elm 710/?       Korporationsnavn        Personal-name
-elm 710/?/A     Korporationsnavn        Personal-name
-elm 710/?/a     Korporationsnavn        Personal-name
-elm 710/?/c     Underkorporation        Personal-name
-elm 710/?/e     Tilføjelse              Personal-name
-elm 710/?/i     Nummer-pÃ¥-konference    Personal-name
-elm 710/?/j     Sted-for-konference     Personal-name
-elm 710/?/k     Ã…r-for-konference       Personal-name
-elm 710/?/Ã¥     Korporationsnavn        -
-
-
-elm 739         Uniform-titel/standardtitel -
-elm 739/?       Uniform-titel/standardtitel Title-uniform
-elm 739/?/t     Uniform-titel/standardtitel Title-uniform
-
-elm 740         Uniform-titel                -
-elm 740/?       Uniform-titel                Title,Title-uniform
-elm 740/?/a     Uniform-titel                Title,Title-uniform
-elm 740/?/s     Titel-pÃ¥-del-af-værket       Title,Title-uniform
-
-elm 745         Varianttitel            -
-elm 745/?       Varianttitel            -
-elm 745/?/A     Varianttitel            -
-elm 745/?/a     Titel                   Title
-elm 745/?/o     Titel-pÃ¥-afhængig-publikation/supplement    -
-
-elm 770         Personnavn-analyse      -
-elm 770/?       Personnavn-analyse      Personal-name
-elm 770/?/A     Personnavn-analyse      -
-elm 770/?/a     Efternavn/fornavn-alene Personal-name
-elm 770/?/c     FødselsÃ¥r               Personal-name
-elm 770/?/f     Tilføjelse              Personal-name
-elm 770/?/h     Fornavn                 Personal-name
-elm 770/?/Ã¥     Feltnumerator           -
-
-elm 780         Korporationsnavn-analyse    -
-elm 780/?       Korporationsnavn-analyse    Personal-name,Corporate-name
-elm 780/?/a     Korporationsnavn            Personal-name,Corporate-name
-elm 780/?/Ã¥     Feltnumerator               Personal-name,Corporate-name
-
-elm 795         Analytisk-titel                             -
-elm 795/?       Analytisk-titel                             Title
-elm 795/?/A     Analytisk-titel                             -
-elm 795/?/a     Analytisk-titel                             Title
-elm 795/?/b     Rest-af-analytisk-titel/alternativ-titel    Title
-elm 795/?/c     Undertitel/anden-titelinformation           Title
-elm 795/?/e     Ophavsangivelse-opslag                      -
-elm 795/?/i     Anden-primær/sekundær-ophavsangivelse       -
-elm 795/?/p     Paralleltitel                               Title
-elm 795/?/u     Almindeligt-kendt-tilnavn                   Title
-elm 795/?/v     Uddragstitel                                Title
-elm 795/?/y     Kode                                        -
-elm 795/?/Ã¥     Feltnumerator                               -
-
-elm 840         Serietitel              -
-elm 840/?       Serietitel              -
-elm 840/?/V     Serietitel              -
-elm 840/?/a     Seriens-hovedtitel              Title,Title-series
-elm 840/?/v     Seriens-nummerering/datering    Title,Title-series
-elm 840/?/z     Seriens-ISSN                    Identifier-standard,ISSN,Item-number
-elm 840/?/ø     Identificerende-tilføjelser-til-seriens-titel   Title
-
-elm 860         Tidligere-titel         -
-elm 860/?       Tidligere-titel         -
-elm 860/?/c     Tilføjelse-til-titel    Related-periodical,Title-former
-elm 860/?/t     Hovedtitel              Title-former
-elm 860/?/z     ISSN                    Identifier-standard,ISSN,Item-number
-
-elm 861         Senere-titel            -
-elm 861/?       Senere-titel            -
-elm 861/?/c     Tilføjelse-til-titel    Related-periodical,Title-added-title-page
-elm 861/?/i     Indledende-tekst       -
-elm 861/?/t     Hovedtitel              Related-periodical,Title-added-title-page
-elm 861/?/z     ISSN                    Identifier-standard,ISSN,Item-number
-
-elm 863         Udgivet-sammen-med      -
-elm 863/?       Udgivet-sammen-med      -
-elm 863/?/t     Hovedtitel              Title-other-variant
-elm 863/?/z     ISSN                    Identifier-standard,ISSN,Item-number
-
-elm 867         Hovedudgave-pÃ¥-andet-sprog/andet-indhold    -
-elm 867/?       Hovedudgave-pÃ¥-andet-sprog/andet-indhold    -
-elm 867/?/t     Hovedtitel                                  Title-other-variant
-elm 867/?/z     ISSN                                        Identifier-standard,ISSN,Item-number
-
-elm 868         Udgave-pÃ¥-andet-sprog/andet-indhold     -
-elm 868/?       Udgave-pÃ¥-andet-sprog/andet-indhold     -
-elm 868/?/t     Hovedtitel                              Title-other-variant
-elm 868/?/z     ISSN                                    Identifier-standard,ISSN,Item-number
-
-elm 870         Hovedpublikation-til-supplement     -
-elm 870/?       Hovedpublikation-til-supplement     -
-elm 870/?/t     Hovedtitel                          Title-other-variant
-elm 870/?/z     ISSN                                Identifier-standard,ISSN,Item-number
-
-elm 871         Supplement-til-hovedpublikation     -
-elm 871/?       Supplement-til-hovedpublikation     -
-elm 871/?/c     Tilføjelse-til-titel                -
-elm 871/?/t     Hovedtitel                          Title-other-variant
-
-elm 874         Underserie              -
-elm 874/?       Underserie              -
-elm 874/?/t     Hovedtitel              Title-other-variant
-elm 874/?/z     ISSN                    Identifier-standard,ISSN,Item-number
-
-elm 900         Henvisning-fra-personnavn   -
-elm 900/?       Henvisning-fra-personnavn   Personal-name
-elm 900/?/A     Henvisning-fra-personnavn   -
-elm 900/?/a     Efternavnet/fornavnet-alene Personal-name
-elm 900/?/c     FødselsÃ¥r                   Personal-name
-elm 900/?/f     Tilføjelse                  Personal-name
-elm 900/?/h     Fornavn                     Personal-name
-elm 900/?/k     Fuldt-udskrevet-fornavn     Personal-name
-elm 900/?/w     Ord-hvortil-der-henvises    -
-elm 900/?/x     Forbindende-tekst           -
-elm 900/?/z     Felt/delfeltkode-hvortil-der-henvises   -
-elm 900/?/Ã¥     Feltnumerator               -
-
-elm 910         Henvisning-fra-korporationsnavn     -
-elm 910/?       Henvisning-fra-korporationsnavn     Personal-name
-elm 910/?/A     Henvisning-fra-korporationsnavn     -
-elm 910/?/a     Korporationsnavn                    Personal-name
-elm 910/?/c     Underkorporation                    Personal-name
-elm 910/?/e     Tilføjelse                          Personal-name
-elm 910/?/g     Resten-af-korporationsnavn          Personal-name
-elm 910/?/h     Forbogstaver/fornavnsforkortelser   Personal-name
-elm 910/?/w     Ord-hvortil-der-henvises            -
-elm 910/?/x     Forbindende-tekst                   -
-elm 910/?/z     Felt/delfeltkode-hvortil-der-henvises     -
-elm 910/?/Ã¥     Feltnumerator                       -
-
-elm 945         Henvisning-fra-titel        -
-elm 945/?       Henvisning-fra-titel        -
-elm 945/?/a     Title                       Title
-elm 945/?/w     Ord-hvortil-der-henvises    -
-elm 945/?/x     Forbindende-tekst           -
-elm 945/?/z     Felt/delfeltkode-hvortil-der-henvises        -
-
-elm 980         Bibliotekets-beholdning-af-et-periodicum    -
-elm 980/?       Bibliotekets-beholdning-af-et-periodicum    -
-elm 980/?/d     Første-Ã¥r                                   -
-elm 980/?/g     Kode-for-fuldstændighed                     -
-
-elm s01         felt-s01                    -
-elm s01/?       felt-s01                    -
-elm s01/?/a     felt-s01                    -
-elm s01/?/b     felt-s01                    -
-
-
-elm s06         felt-s06                    -
-elm s06/?       felt-s06                    -
-elm s06/?/a     felt-s06                    -
-elm s06/?/b     felt-s06                    -
-
-elm s10         felt-s10                    -
-elm s10/?       felt-s10                    -
-elm s10/?/a     felt-s10                    -
-
-elm s45         felt-s45                    -
-elm s45/?       felt-s45                    -
-elm s45/?/a     felt-s45                    -
-
diff --git a/tab/danmarc.mar b/tab/danmarc.mar
deleted file mode 100644 (file)
index f9717e2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# $Id: danmarc.mar,v 1.1 2000-05-18 11:55:47 adam Exp $
-name danmarc
-reference danmarc
diff --git a/tab/explain.abs b/tab/explain.abs
deleted file mode 100644 (file)
index 832894f..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-# This Explain schema is used for our internal management and processing of
-# explain data. On request, records are mapped to the proper Explain ASN.1
-# before transmission.
-#
-# $Id: explain.abs,v 1.14 1998-10-13 20:52:18 adam Exp $
-
-name explain
-reference Explain-schema
-attset explain
-tagset explain.tag
-
-esetname B @
-esetname F @
-
-
-section rpnCapabilities
-elm (4,550)                            rpnOperators                    -
-elm (4,550)/(4,551)                    rpnOperator                     -
-elm (4,552)                            resultSetAsOperandSupported     -
-elm (4,553)                            restrictionOperandSupported     -
-elm (4,554)                            proximitySupport                -
-elm (4,554)/(4,555)                    anySupport                      -
-elm (4,554)/(4,556)                    unitsSupported                  -
-elm (4,554)/(4,556)/(4,557)            unitSupported                   -
-elm (4,554)/(4,556)/(4,557)/(4,558)    known                           -
-elm (4,554)/(4,556)/(4,557)/(4,559)    private                         -
-elm (4,554)/(4,556)/(4,557)/(4,559)/(4,558) privateUnit                        -
-elm (4,554)/(4,556)/(4,557)/(4,559)/(4,560) description                        -
-
-section accessInfo
-elm (4,501)                            queryTypesSupported             -
-elm (4,501)/(4,518)                    queryTypeDetails                -
-elm (4,501)/(4,518)/(4,519):rpnCapabilities    rpnCapabilities         -
-elm (4,501)/(4,518)/(4,520)            iso8777Capabilities             -
-elm (4,501)/(4,518)/(4,521)            privateCapabilities             -
-elm (4,503)                            diagnosticSets                  -
-elm (4,503)/(4,1000)                   diagnosticSet                   -
-elm (4,505)                            attributeSetIds                 -
-elm (4,505)/(4,1000)                   attributeSetId                  -
-elm (4,507)                            schemas                         -
-elm (4,507)/(4,1000)                   schema                          -
-elm (4,509)                            recordSyntaxes                  -
-elm (4,509)/(4,1000)                   recordSyntax                    -
-elm (4,511)                            resourceChallenges              -
-elm (4,511)/(4,1000)                   resourceChallenge               -
-elm (4,513)                            restrictedAccess                -
-elm (4,514)                            costInfo                        -
-elm (4,515)                            variantSets                     -
-elm (4,515)/(4,1000)                   variantSets                     -
-elm (4,516)                            elementSetNames                 -
-elm (4,516)/(4,1001)                   elementSetName                  -
-elm (4,517)                            unitSystems                     -
-elm (4,517)/(4,1001)                   unitSystem                      -
-
-section commonInfo
-elm (4,601)                            dateAdded                       !
-elm (4,602)                            dateChanged                     !
-elm (4,603)                            expiry          DateExpired
-elm (4,604)                            languageCode    HumanStringLanguage
-
-section contactInfo
-elm (4,102)                            name                            -
-elm (4,113)                            description                     -
-elm (4,127)                            address                         -
-elm (4,128)                            email                           -
-elm (4,129)                            phone                           -
-
-section stringOrNumeric
-elm (4,1001)                           string                          -
-elm (4,1002)                           numeric                         -
-
-section attributeSetDetailsValue
-elm (4,709)                            attributeValue                  -
-elm (4,709)/(4,710):stringOrNumeric    value   -
-elm (4,709)/(4,113)                    description                     -
-elm (4,709)/(4,712)                    subAttributes                   -
-elm (4,709)/(4,712)/(4,713):stringOrNumeric subAttribute               -
-elm (4,709)/(4,714)                    superAttributes                 -
-elm (4,709)/(4,714)/(4,715):stringOrNumeric superAttributes            -
-elm (4,709)/(4,711)                    partialSupport                  -
-
-section attributeSetDetails
-elm (4,1000)                           attributeSet                    -
-elm (4,702)                            attributesByType                -
-elm (4,702)/(4,703)                    attributeTypeDetails            -
-elm (4,702)/(4,703)/(4,704)            attributeType                   -
-elm (4,702)/(4,703)/(4,705)            defaultIfOmitted                -
-elm (4,702)/(4,703)/(4,705)/(4,706):stringOrNumeric    defaultValue    -
-elm (4,702)/(4,703)/(4,705)/(4,113)    defaultDescription              -
-elm (4,702)/(4,703)/(4,708):attributeSetDetailsValue attributeValues   -
-
-section attributeCombinations
-elm (4,1000)                           attributeSet                    -
-elm (4,717)                            legalCombinations               -
-elm (4,717)/(4,718)                    legalCombination                -
-elm (4,717)/(4,718)/(4,719)            attributeOccurrence             -
-elm (4,717)/(4,718)/(4,719)/(4,1000)   attributeSetId                  -
-elm (4,717)/(4,718)/(4,719)/(4,704)    attributeType                   -
-elm (4,717)/(4,718)/(4,719)/(4,720)    mustBeSupplied                  -
-elm (4,717)/(4,718)/(4,719)/(4,721)    anyOrNone                       -
-elm (4,717)/(4,718)/(4,719)/(4,722)    specific                        -
-elm (4,717)/(4,718)/(4,719)/(4,722)/(4,710):stringOrNumeric value      -
-
-section attributeType
-elm (4,751)                            attributeType                   -
-elm (4,751)/(4,102)                    attributeName                   -
-elm (4,751)/(4,113)                    attributeDescription            -
-elm (4,751)/(4,704)                    type                            -
-elm (4,751)/(4,708)                    attributeValues                 -
-elm (4,751)/(4,708)/(4,709)            attributeValue                  -
-elm (4,751)/(4,708)/(4,709)/(4,102)    name                            -
-elm (4,751)/(4,708)/(4,709)/(4,113)    description                     -
-elm (4,751)/(4,708)/(4,709)/(4,710):stringOrNumeric attributeValue     -
-elm (4,751)/(4,708)/(4,709)/(4,752):stringOrNumeric equivalentAttribute        -
-
-section main
-#
-# CategoryList
-#
-elm (4,1)                              categoryList    ExplainCategory
-elm (4,1)/(4,600):commonInfo           categoryListCommonInfo          -
-elm (4,1)/(4,300)                      categories                      -
-elm (4,1)/(4,300)/(4,301)              category                        -
-elm (4,1)/(4,300)/(4,301)/(4,102)      categoryName                    -
-elm (4,1)/(4,300)/(4,301)/(4,302)      originalName                    -
-elm (4,1)/(4,300)/(4,301)/(4,113)      description                     -
-elm (4,1)/(4,300)/(4,301)/(4,303)      asn1Module                      -
-elm (4,1)/?                            other                           -
-
-#
-# TargetInfo
-# 
-elm (4,2)                              targetInfo              ExplainCategory
-elm (4,2)/(4,600):commonInfo           targetCommonInfo                -
-elm (4,2)/(4,102)                      targetName              TargetName
-elm (4,2)/(4,103)                      recentNews                      -
-elm (4,2)/(4,104)                      icon                            -
-elm (4,2)/(4,105)                      namedResultSets                 -
-elm (4,2)/(4,106)                      multipleDbSearch                -
-elm (4,2)/(4,107)                      maxResultSets                   -
-elm (4,2)/(4,108)                      maxResultSize                   -
-elm (4,2)/(4,109)                      maxTerms                        -
-elm (4,2)/(4,110)                      timeoutInterval                 -
-elm (4,2)/(4,111)                      welcomeMessage                  -
-elm (4,2)/(4,112):contactInfo          contactInfo                     -
-elm (4,2)/(4,113)                      description                     -
-elm (4,2)/(4,114)                      nicknames                       -
-elm (4,2)/(4,114)/(4,102)              nickname                        -
-elm (4,2)/(4,115)                      usageRestrictions               -
-elm (4,2)/(4,116)                      paymentAddr                     -
-elm (4,2)/(4,117)                      hours                           -
-elm (4,2)/(4,118)                      dbCombinations                  -
-elm (4,2)/(4,118)/(4,605)              databaseList                    -
-elm (4,2)/(4,118)/(4,605)/(4,102)      databaseName                    -
-elm (4,2)/(4,119)                      addresses                       -
-elm (4,2)/(4,119)/(4,120)              internetAddress                 -
-elm (4,2)/(4,119)/(4,120)/(4,121)      host                            -
-elm (4,2)/(4,119)/(4,120)/(4,122)      port                            -
-elm (4,2)/(4,119)/(4,123)              otherAddress                    -
-elm (4,2)/(4,119)/(4,123)/(4,124)      addressType                     -
-elm (4,2)/(4,119)/(4,123)/(4,121)      address                         -
-elm (4,2)/(4,125)                      languages                       -
-elm (4,2)/(4,125)/(4,126)              language                        -
-elm (4,2)/(4,500):accessInfo           commonAccessInfo                -
-elm (4,2)/?                            other                           -
-#
-# DatabaseInfo
-#
-elm (4,3)                              databaseInfo    ExplainCategory
-elm (4,3)/(4,600):commonInfo           databaseCommonInfo              -
-elm (4,3)/(4,102)                      databaseName    DatabaseName
-elm (4,3)/(4,226)                      explainDatabase                 -
-elm (4,3)/(4,114)                      nicknames                       -
-elm (4,3)/(4,114)/(4,102)              nickname                        -
-elm (4,3)/(4,104)                      icon                            -
-elm (4,3)/(4,201)                      userFee                         -
-elm (4,3)/(4,202)                      available       Availability
-elm (4,3)/(4,203)                      titleString                     -
-elm (4,3)/(4,227)                      keywords                        -
-elm (4,3)/(4,227)/(4,1000)             keyword                         -
-elm (4,3)/(4,113)                      description                     -
-elm (4,3)/(4,205)                      associatedDbs                   -
-elm (4,3)/(4,205)/(4,605)              databaseList                    -
-elm (4,3)/(4,205)/(4,605)/(4,102)      databaseName                    -
-elm (4,3)/(4,206)                      subDbs                          -
-elm (4,3)/(4,206)/(4,605)              databaseList                    -
-elm (4,3)/(4,206)/(4,605)/(4,102)      databaseName                    -
-elm (4,3)/(4,207)                      disclaimers                     -
-elm (4,3)/(4,103)                      recentNews                      -
-elm (4,3)/(4,209)                      recordCount                     -
-elm (4,3)/(4,209)/(4,210)              recordCountActual               -
-elm (4,3)/(4,209)/(4,211)              recordCountApprox               -
-elm (4,3)/(4,212)                      defaultOrder                    -
-elm (4,3)/(4,213)                      avRecordSize                    -
-elm (4,3)/(4,214)                      maxRecordSize                   -
-elm (4,3)/(4,215)                      hours                           -
-elm (4,3)/(4,216)                      bestTime                        -
-elm (4,3)/(4,217)                      lastUpdate                      -
-elm (4,3)/(4,218)                      updateInterval                  -
-elm (4,3)/(4,219)                      coverage                        -
-elm (4,3)/(4,220)                      proprietary                     -
-elm (4,3)/(4,221)                      copyrightText                   -
-elm (4,3)/(4,222)                      copyrightNotice                 -
-elm (4,3)/(4,223):contactInfo          producerContactInfo             -
-elm (4,3)/(4,224):contactInfo          supplierContactInfo             -
-elm (4,3)/(4,225):contactInfo          submissionContactInfo           -
-elm (4,3)/(4,500):accessInfo           databaseAccessInfo              -
-elm (4,3)/?                            other                           -
-#
-# AttributeSetInfo
-#
-elm (4,7)                              attributeSetInfo        ExplainCategory
-elm (4,7)/(4,600):commonInfo           attributeSetInfoCommonInfo      -
-elm (4,7)/(4,1000)                     attributeSet            AttributeSetOID
-elm (4,7)/(4,113)                      description                     -
-elm (4,7)/(4,102)                      name                            -
-elm (4,7)/(4,750):attributeType                attributes                      -
-elm (4,7)/?                            other                           -
-#
-# AttributeDetails
-#
-elm (4,10)                             attributeDetails        ExplainCategory
-elm (4,10)/(4,600):commonInfo          attributeDetailsCommonInfo      -
-elm (4,10)/(4,102)                     databaseName            DatabaseName
-elm (4,10)/(4,700)                     attributesBySet                 -
-elm (4,10)/(4,700)/(4,701):attributeSetDetails attributeSetDetails     -
-elm (4,10)/(4,716):attributeCombinations attributeCombinations         -
-elm (4,10)/?                           other                           -
-
diff --git a/tab/explain.att b/tab/explain.att
deleted file mode 100644 (file)
index d043e66..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# The Explain Attribute Set
-#
-# $Id: explain.att,v 1.3 1998-10-13 20:52:19 adam Exp $
-name explain
-reference Exp-1
-
-att 1                  ExplainCategory
-att 2                  HumanStringLanguage
-att 3                  DatabaseName
-att 4                  Targetname
-att 5                  AttributeSetOID
-att 6                  RecordSyntaxOID
-att 7                  TagSetOID
-att 8                  ExtendedServicesOID
-att 9                  DateAdded
-att 10                 DateChanged
-att 11                 DateExpired
-att 12                 ElementSetName
-att 13                 ProcessingContext
-att 14                 ProcessingName
-att 15                 TermListName
-att 16                 SchemaOID
-att 17                 Producer
-att 18                 Supplier
-att 19                 Availability
-att 20                 Proprietary
-att 21                 UserFee
diff --git a/tab/explain.tag b/tab/explain.tag
deleted file mode 100644 (file)
index 2fcdd06..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-# Tag set for internal Explain-data management
-#
-# $Id: explain.tag,v 1.10 1998-10-13 20:52:20 adam Exp $
-
-name explain
-reference Explain-tagset
-type 4
-include tagsetm.tag
-
-#
-# Explain categories
-#
-tag 1          categoryList                                    structured
-tag 2          targetInfo                                      structured
-tag 3          databaseInfo                                    structured
-tag 4          schemaInfo                                      structured
-tag 5          tagSetInfo                                      structured
-tag 6          recordSyntaxInfo                                structured
-tag 7           attributeSetInfo                               structured
-tag 8          termListInfo                                    structured
-tag 9          extendedServicesInfo                            structured
-tag 10         attributeDetails                                structured
-tag 11         termListDetails                                 structured
-tag 12         elementSetDetails                               structured
-tag 13         retrievalRecordDetails                          structured
-tag 14         sortDetails                                     structured
-tag 15         processing                                      structured
-tag 16         variants                                        structured
-tag 17         units                                           structured
-
-#
-# TargetInfo
-#
-tag 102                name                                            string
-tag 103                recentNews                                      string
-tag 104                icon                                            structured
-tag 105                namedResultSets                                 bool
-tag 106                multipleDbSearch                                bool
-tag 107                maxResultSets                                   numeric
-tag 108                maxResultSize                                   numeric
-tag 109                maxTerms                                        numeric
-tag 110                timeoutInterval                                 intunit
-tag 111                welcomeMessage                                  string
-tag 112                contactInfo                                     structured
-tag 113                description                                     string
-tag 114                nicknames                                       structured
-tag 115                usageRest                                       string
-tag 116                paymentAddr                                     string
-tag 117                hours                                           string
-tag 118                dbCombinations                                  structured
-tag 119                addresses                                       structured
-tag 120                internetAddress                                 structured
-tag 121                host                                            string
-tag 122                port                                            numeric
-tag 123                otherAddress                                    structured
-tag 124                addressType                                     string
-tag 125                languages                                       structured
-tag 126                language                                        string
-tag 127                address                                         string
-tag 128                email                                           string
-tag 129                phone                                           string
-
-#
-# DatabaseInfo
-#
-tag 201                userFee                                         bool
-tag 202                available                                       bool
-tag 203                titleString                                     string
-tag 205                associatedDbs                                   structured
-tag 206                subDbs                                          structured
-tag 207                disclaimers                                     string
-tag 209                recordCount                                     structured
-tag 210                recordCountActual                               numeric
-tag 211                recordCountApprox                               numeric
-tag 212                defaultOrder                                    string
-tag 213                avRecordSize                                    numeric
-tag 214                maxRecordSize                                   numeric
-tag 215                hours                                           string
-tag 216                bestTime                                        string
-tag 217                lastUpdate                                      generalizedtime
-tag 218                updateInterval                                  intunit
-tag 219                coverage                                        string
-tag 220                proprietary                                     bool
-tag 221                copyrightText                                   string
-tag 222                copyrightNotice                                 string
-tag 223                producerContactInfo                             structured
-tag 224                supplierContactInfo                             structured
-tag 225                submissionContactInfo                           structured
-tag 226                explainDatabase                                 null
-tag 227                keywords                                        string
-
-# CategoryList
-tag 300                categories                                      structured
-tag 301                category                                        structured
-tag 302                originalName                                    string
-tag 303                asn1Module                                      string
-#
-# AccessInfo
-#
-tag 500                accessinfo                                      structured
-tag 501                queryTypesSupported                             structured
-tag 503                diagnosticSets                                  structured
-tag 505                attributeSetIds                                 structured
-tag 507                schemas                                         structured
-tag 509                recordSyntaxes                                  structured
-tag 511                resourceChallenges                              structured
-tag 513                restrictedAccess                                structured
-tag 514                costInfo                                        structured
-tag 515                variantSets                                     structured
-tag 516                elementSetNames                                 structured
-tag 517                unitSystems                                     structured
-tag 518         queryTypeDetails                               structured
-tag 519                rpnCapabilities                                 structured
-tag 520                Iso8777Capabilities                             structured
-tag 521         privateCapabilities                            structured
-
-tag 550                rpnOperators                                    structured
-tag 551                rpnOperator                                     numeric
-tag 552                resultSetAsOperandSupported                     bool
-tag 553                restrictionOperandSupported                     bool
-tag 554                proximitySupport                                structured
-tag 555                anySupport                                      bool
-tag 556        proximityUnitsSupported                         structured
-tag 557                proximityUnitSupported                          structured
-tag 558                proximityUnitVal                                numeric
-tag 559                proximityUnitPrivate                            structured
-tag 560                proximityUnitDescription                        string
-
-# CommonInfo
-
-tag 600                commonInfo                                      structured
-tag 601                dateAdded                                       generalizedtime
-tag 602                dateChanged                                     generalizedtime
-tag 603                expiry                                          generalizedtime
-tag 604                languageCode                                    string
-tag 605        databaseList                                    structured
-
-# AttributeDetails, AttributeSetDetails
-
-tag 700                attributesBySet                                 structured
-tag 701                attributeSetDetails                             structured
-tag 702                attributesByType                                structured
-tag 703                attributeTypeDetails                            structured
-tag 704                type                                            numeric
-tag 705                defaultIfOmitted                                structured
-tag 706                defaultValue                                    structured
-tag 708                attributeValues                                 structured
-tag 709                attributeValue                                  structured
-tag 710                value                                           structured
-tag 711                partialSupport                                  string
-tag 712                subAttributes                                   structured
-tag 713                subAttribute                                    structured
-tag 714                superAttributes                                 structured
-tag 715                superAttribute                                  structured
-tag 716                attributeCombinations                           structured
-tag 717                legalAttributeCombinations                      structured
-tag 718                attributeCombination                            structured
-tag 719                attributeOccurrence                             structured
-tag 720                mustBeSupplied                                  bool
-tag 721                anyOrNone                                       string
-tag 722                specific                                        structured
-
-#
-# AttributeSetInfo
-#
-tag 750                attributes                                      structured
-tag 751                attributeType                                   structured
-tag 752                equivalentAttribute                             structured
-#
-# General tags for list members, etc.
-#
-tag 1000       oid                                             oid
-tag 1001       string                                          string
-tag 1002       numeric                                         numeric
-
diff --git a/tab/generic.tag b/tab/generic.tag
deleted file mode 100644 (file)
index 24771a3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generic tags - including tagsetM and tagsetG.
-#
-# $Id: generic.tag,v 1.2 1998-10-13 20:52:21 adam Exp $
-name generic
-
-include tagsetm.tag
-include tagsetg.tag
diff --git a/tab/gils-a.est b/tab/gils-a.est
deleted file mode 100644 (file)
index 2986a40..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-simpleelement (1,10)
-simpleelement (1,12)
-simpleelement (2,1)
-simpleelement (1,14)
-simpleelement (4,1)
-simpleelement (4,52)
-simpleelement (2,6)
diff --git a/tab/gils-b.est b/tab/gils-b.est
deleted file mode 100644 (file)
index d00e5c0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# $Id: gils-b.est,v 1.7 1996-07-26 13:38:23 quinn Exp $
-simpleelement (1,1)
-simpleelement (1,10)
-simpleelement (1,12)
-simpleelement (2,1)
-simpleelement (1,14)
-simpleelement (1,16)
-simpleelement (4,1)
-simpleelement (4,52)
-simpleelement (4,70)/(4,17)
diff --git a/tab/gils-f.est b/tab/gils-f.est
deleted file mode 100644 (file)
index 3749157..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# $Id: gils-f.est,v 1.1 1996-10-07 15:54:47 quinn Exp $
-simpleelement ?
diff --git a/tab/gils-g.est b/tab/gils-g.est
deleted file mode 100644 (file)
index 0dc1e52..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# $Id: gils-g.est,v 1.7 1998-10-13 20:52:22 adam Exp $
-simpleelement (1,1)
-simpleelement (1,10)
-simpleelement (1,12)
-simpleelement (2,1)
-simpleelement (1,14)
-simpleelement (1,16)
-simpleelement (4,1)
-simpleelement (4,52)
-simpleelement (4,98)
-
-#
-# These are not formally required by GILS
-#
-simpleelement (4,59)
-simpleelement (4,70)
-simpleelement (4,97)
diff --git a/tab/gils-summary.map b/tab/gils-summary.map
deleted file mode 100644 (file)
index 69c0d44..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# This table maps GILS-records to the Summary (abstract) syntax
-#
-
-targetname summary
-targetref Summary
-
-map title              /(4,0)
-map originator         /(4,1)
-map localControlNumber  /(4,12)
-map rank               /(4,14)
-map abstract           /(4,16)
diff --git a/tab/gils-usmarc.map b/tab/gils-usmarc.map
deleted file mode 100644 (file)
index 40f6c34..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# This table maps records in the GILS abstract syntax to the USMARC one
-# $Id: gils-usmarc.map,v 1.6 2002-05-28 21:11:08 adam Exp $
-
-targetname usmarc
-targetref USmarc
-
-map rank                       /(3,999)/(3,r)
-map localControlNumber         /(3,001)
-map dateLastModified           /(3,005)
-map ControlIdentifier          /(3,035)/(3,a)
-
-map title                      /(3,245)/(3,a)
-map abstract                   /(3,520)/(3,a)
-map purpose                    /(3,500)/(3,a)
-map originator                 /(3,710)/(3,a)
-map accessConstraints          /(3,506)/(3,a)
-map useConstraints             /(3,540)/(3,a)
-
-map distributor                        /(3,270):new nodata
-map distributorName            /(3,270)/(3,p)
-map distributorOrganization    /(3,270)/(3,p)
-map distributorStreetAddress   /(3,270)/(3,a)
-map distributorCity            /(3,270)/(3,b)
-map distributorState           /(3,270)/(3,c)
-map distributorZipCode         /(3,270)/(3,e)
-map distributorCountry         /(3,270)/(3,d)
-map distributorNetworkAddress  /(3,270)/(3,m)
-map distributorHoursOfService  /(3,301)/(3,a)
-map distributorTelephone       /(3,270)/(3,k)
-map distributorFax             /(3,270)/(3,l)
-
-map resourceDescription                /(3,037)/(3,f)
-map orderProcess               /(3,037)/(3,c)
-map technicalPrerequisite      /(3,538)/(3,a)
-map availableTimePeriodStructured      /(3,045)/(3,c)
-map availableTimePeriodTextual         /(3,037)/(3,n) # Unhandled conditional
-
-map linkage                    /(3,856)/(3,u)
-map linkageType                        /(3,856)/(3,2)
-#map pointOfContact            /(3,856)/(3,m) # Look into this
-
-map pointOfContact             /(3,270):new nodata
-map contactName                        /(3,270)/(3,p)
-map contactOrganization                /(3,270)/(3,p)
-map contactStreetAddress       /(3,270)/(3,a)
-map contactCity                        /(3,270)/(3,b)
-map contactState               /(3,270)/(3,c)
-map contactZipCode             /(3,270)/(3,e)
-map contactCountry             /(3,270)/(3,d)
-map contactNetworkAddress      /(3,270)/(3,m)
-map contactHoursOfService      /(3,301)/(3,a)
-map contactTelephone           /(3,270)/(3,k)
-map contactFax                 /(3,270)/(3,l)
-
-map recordSource               /(3,040)/(3,a)
-map agencyProgram              /(3,500)/(3,a)
-map sourcesOfData              /(3,537)/(3,a)
-map controlledTerm             /(3,650)/(3,a)
-map thesaurus                  /(3,650)/(3,2)
-map localSubjectTerm           /(3,653)/(3,a)
-map methodology                        /(3,567)/(3,a)
-
-map boundingrectangle          /(3,034):new nodata
-map westernMost                        /(3,034)/(3,d)
-map easternMost                        /(3,034)/(3,e)
-map northernMost               /(3,034)/(3,f)
-map southernMost               /(3,034)/(3,g)
-
-map geographicKeywordName      /(3,651)/(3,a)
-map geographicKeywordType      /(3,655)/(3,z)  # Probably incorrect
-map timeperiodStructured       /(3,045)/(3,c)
-map timeperiodTextual          /(3,513)/(3,b)
-map crossReference              /(3,787):new     nodata
-map crossReferenceTitle                /(3,787)/(3,t)
-map crossReferenceLinkage      /(3,787)/(3,w)
-
-map supplementalInformation    /(3,500)/(3,a)
diff --git a/tab/gils-variant.est b/tab/gils-variant.est
deleted file mode 100644 (file)
index cb91cbd..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# This is the WAIS VARIANT element set description.
-# The empty variant parameters to the simpleelement statements simply
-# override the default.
-#
-
-defaultvariantrequest (9,1,@) (6,5,@)  # No data; variant list.
-
-simpleelement (1,10) variant
-simpleelement (1,12) variant
-simpleelement (2,1) variant
-simpleelement (2,6)
-simpleelement (1,14) variant
-simpleelement (4,1)
-simpleelement (4,52)
diff --git a/tab/gils.abs b/tab/gils.abs
deleted file mode 100644 (file)
index 27c6d0e..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-# This is the abstract syntax (and most of the top-level profile info)
-# for GILS version 2.
-#
-# $Id: gils.abs,v 1.18 1998-10-13 20:52:23 adam Exp $
-
-name gils
-reference GILS-schema
-attset gils.att
-tagset gils.tag
-varset var1.var
-
-maptab gils-usmarc.map
-maptab gils-summary.map
-
-# Element set names
-
-esetname VARIANT gils-variant.est  # for WAIS-compliance
-esetname B gils-b.est
-esetname G gils-g.est
-esetname W gils-b.est   # We don't really do bodyOfDisplay yet.
-esetname F @
-
-#all Any
-
-elm (1,1)                   schemaIdentifier           -
-elm (1,10)                  rank                       -
-elm (1,12)                  url                                -
-elm (1,14)                  localControlNumber         -
-elm (2,1)                   title                      !:w,!:p,!:s
-elm (4,52)                  originator                 author-name-corporate
-#
-# Additional structuring of originator non-standard.
-#
-elm (4,52)/(2,7)            originatorName             author-name-corporate
-elm (4,52)/(2,10)           originatorOrganization     author-name-corporate
-elm (4,52)/(4,2)            originatorStreetAddress    author-name-corporate
-elm (4,52)/(4,3)            originatorCity             author-name-corporate
-elm (4,52)/(4,4)            originatorStateOrProvince  author-name-corporate
-elm (4,52)/(4,5)            originatorZipOrPostalCode  author-name-corporate
-elm (4,52)/(2,16)           originatorCountry          author-name-corporate
-elm (4,52)/(2,12)           originatorNetworkAddress   author-name-corporate
-elm (4,52)/(4,6)            originatorHoursofService   author-name-corporate
-elm (4,52)/(2,14)           originatorTelephone                author-name-corporate
-elm (4,52)/(2,15)           originatorFax              author-name-corporate
-elm (2,2)                   author                     !
-#
-# Additional structuring of author non-standard.
-#
-elm (2,2)/(2,7)             authorName                 author
-elm (2,2)/(2,10)            authorOrganization         author
-elm (2,2)/(4,2)             authorStreetAddress                author
-elm (2,2)/(4,3)             authorCity                 author
-elm (2,2)/(4,4)             authorStateOrProvince      author
-elm (2,2)/(4,5)             authorZipOrPostalCode      author
-elm (2,2)/(2,16)            authorCountry              author
-elm (2,2)/(2,12)            authorNetworkAddress       author
-elm (2,2)/(4,6)             authorHoursofService       author
-elm (2,2)/(2,14)            authorTelephone            author
-elm (2,2)/(2,15)            authorFax                  author
-elm (2,4)                   dateOfPublication          !
-elm (2,3)                   placeOfPublication          place-publication
-elm (4,32)                  languageOfResource         code-language
-elm (2,6)                   abstract                   !
-elm (4,95)                  controlledSubjectIndex     -
-elm (4,95)/(4,21)           subjectThesaurus           -
-elm (4,95)/(4,96)           subjectTermsControlled     controlled-subject-index
-elm (4,95)/(4,96)/(4,20)    controlledTerm             index-terms
-elm (4,97)                  subjectTermsUncontrolled    uncontrolled-term
-elm (4,97)/(4,22)           uncontrolledTerm           uncontrolled-term
-elm (4,71)                  spatialDomain              !
-elm (4,71)/(4,91)           boundingCoordinates                !
-elm (4,71)/(4,91)/(4,9)     westBoundingCoordinate      !:n
-elm (4,71)/(4,91)/(4,10)    eastBoundingCoordinate     !:n
-elm (4,71)/(4,91)/(4,11)    northBoundingCoordinate    !:n
-elm (4,71)/(4,91)/(4,12)    southBoundingCoordinate    !:n
-elm (4,71)/(4,92)           place                      !
-elm (4,71)/(4,92)/(4,14)    placeKeywordThesaurus      -
-elm (4,71)/(4,92)/(4,13)    placeKeyword               place
-elm (4,93)                  timePeriod                 !
-elm (4,93)/(4,16)           timePeriodTextual          !
-elm (4,93)/(4,101)          timePeriodStructured       !
-elm (4,93)/(4,101)/(4,15)   beginningDate              !
-elm (4,93)/(4,101)/(4,36)   endingDate                 !
-elm (4,70)                  availability               !
-elm (4,70)/(4,33)           medium                     material-type
-elm (4,70)/(4,90)           distributor                        !
-elm (4,70)/(4,90)/(2,7)     distributorName            !
-elm (4,70)/(4,90)/(2,10)    distributorOrganization    !
-elm (4,70)/(4,90)/(4,2)     distributorStreetAddress   !
-elm (4,70)/(4,90)/(4,3)     distributorCity            !
-elm (4,70)/(4,90)/(4,4)     distributorStateOrProvince !
-elm (4,70)/(4,90)/(4,5)     distributorZipOrPostalCode !
-elm (4,70)/(4,90)/(2,16)    distributorCountry         !
-elm (4,70)/(4,90)/(2,12)    distributorNetworkAddress  !
-elm (4,70)/(4,90)/(4,6)     distributorHoursofService  !
-elm (4,70)/(4,90)/(2,14)    distributorTelephone       !
-elm (4,70)/(4,90)/(2,15)    distributorFax             !
-elm (4,70)/(4,7)            resourceDescription                !
-elm (4,70)/(4,55)           orderProcess               !
-elm (4,70)/(4,55)/(4,28)    orderInformation           !
-elm (4,70)/(4,55)/(4,29)    cost                       !
-elm (4,70)/(4,55)/(4,30)    costInformation            !
-elm (4,70)/(4,8)            technicalPrerequisites     !
-elm (4,70)/(4,93)           availableTimePeriod                !
-elm (4,70)/(4,93)/(4,16)    availableTimeTextual       !
-elm (4,70)/(4,93)/(4,102)   availableTimeStructured    !
-elm (4,70)/(4,93)/(4,102)/(4,15)  beginningDate        available-time-structured
-elm (4,70)/(4,93)/(4,102)/(4,36)  endingDate           available-time-structured
-elm (4,70)/(4,99)           availableLinkage           !
-elm (4,70)/(4,99)/(4,18)    linkageType                        !
-elm (4,70)/(4,99)/(4,17)    linkage                   available-linkage:u,linkage:u
-elm (4,57)                  sourcesOfData              !
-elm (4,58)                  methodology                        !
-elm (4,53)                  accessConstraints          !
-elm (4,53)/(4,25)           generalAccessConstraints   !
-elm (4,53)/(4,26)           originatorDisseminationControl     !
-elm (4,53)/(4,27)           securityClassificationControl      !
-elm (4,54)                  useConstraints                     !
-elm (4,94)                  pointOfContact             !
-elm (4,94)/(2,7)            contactName                        !
-elm (4,94)/(2,10)           contactOrganization                !
-elm (4,94)/(4,2)            contactStreetAddress       !
-elm (4,94)/(4,3)            contactCity                        !
-elm (4,94)/(4,4)            contactStateOrProvince     !
-elm (4,94)/(4,5)            contactZipOrPostalCode     !
-elm (4,94)/(2,16)           contactCountry             !
-elm (4,94)/(2,12)           contactNetworkAddress      !
-elm (4,94)/(4,6)            contactHoursOfService      !
-elm (4,94)/(2,14)           contactTelephone           !
-elm (4,94)/(2,15)           contactFax                 !
-elm (4,59)                  supplementalInformation    -
-elm (4,51)                  purpose                    !
-elm (4,56)                  agencyProgram              !
-elm (4,98)                  crossReference             !
-elm (4,98)/(2,1)            crossReferenceTitle                !
-elm (4,98)/(4,35)           crossReferenceRelationship !
-elm (4,98)/(4,100)          crossReferenceLinkage      !
-elm (4,98)/(4,100)/(4,18)    linkageType               -
-elm (4,98)/(4,100)/(4,17)    linkage                   cross-reference-linkage:u
-elm (4,31)                  scheduleNumber             !
-elm (4,1)                   controlIdentifier          identifier-standard
-elm (4,23)                  originalControlIdentifier  !
-elm (4,19)                  recordSource               !
-elm (4,34)                  languageOfRecord           !
-elm (1,16)                  dateOfLastModification     date/time-last-modified:w,date/time-last-modified:s
-elm (4,24)                  recordReviewDate           !
diff --git a/tab/gils.att b/tab/gils.att
deleted file mode 100644 (file)
index d1ae8e9..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# $Id: gils.att,v 1.5 1998-10-13 20:52:24 adam Exp $
-name gils
-reference GILS-attset
-include bib1.att
-
-att 2000         Distributor
-att 2001        Distributor-Name
-att 2002        Index-Terms                            # Subject-Terms-Contr.
-att 2003         Purpose
-att 2004         General-Access-Constraints
-att 2005         Use-Constraints
-att 2006         Distributor-Organization
-att 2007         Distributor-Street-Address
-att 2008         Distributor-City
-att 2009         Distributor-State-or-Province
-att 2010         Distributor-Zip-or-Postal-Code
-att 2011         Distributor-Country
-att 2012         Distributor-Network-Address
-att 2013         Distributor-Hours-of-Service
-att 2014         Distributor-Telephone
-att 2015         Distributor-Fax
-att 2016         Resource-Description
-att 2017         Order-Information
-att 2018         Technical-Prerequisites
-att 2019         Available-Time-Structured
-att 2020         Available-Time-Textual
-att 2021         Linkage
-att 2022         Linkage-Type
-att 2023         Contact-Name
-att 2024         Contact-Organization
-att 2025         Contact-Street-Address
-att 2026         Contact-City
-att 2027         Contact-State-or-Province
-att 2028         Contact-Zip-or-Postal-Code
-att 2029         Contact-Country
-att 2030         Contact-Network-Address
-att 2031         Contact-Hours-of-Service
-att 2032         Contact-Telephone
-att 2033         Contact-Fax
-att 2034         Agency-Program
-att 2035         Sources-of-Data
-att 2036         Subject-Thesaurus
-att 2037         Methodology
-att 2038         West-Bounding-Coordinate
-att 2039         East-Bounding-Coordinate
-att 2040         North-Bounding-Coordinate
-att 2041         South-Bounding-Coordinate
-att 2042         Place-Keyword
-att 2043         Place-Keyword-Thesaurus
-att 2044         Time-Period-Structured
-att 2045         Time-Period-Textual
-att 2046         Cross-Reference-Title
-att 2047         Cross-Reference-Linkage
-att 2049         Original-Control-Identifier
-att 2050         Supplemental-Information
-att 2051         Record-Review-Date
-att 2052         Originator-Dissemination-Control
-att 2053         Security-Classification-Control
-att 2054         Cost
-att 2055         Cost-Information
-att 2056         Schedule-Number
-att 2057         Controlled-Subject-Index
-att 2058         Uncontrolled-Term
-att 2059         Spatial-Domain
-att 2060         Bounding-Coordinates
-att 2061         Place
-att 2062         Time-Period
-att 2063         Availability
-att 2064         Order-Process
-att 2065         Available-Time-Period
-att 2066         Access-Constraints
-att 2067         Point-of-Contact
-att 2068         Cross-Reference
-att 2069         Available-Linkage
-att 2070         Cross-Reference-Relationship
-att 2071         Language-of-Record
-att 2072         Beginning-Date
-att 2073         Ending-Date
-att 2074         Controlled-Term
diff --git a/tab/gils.tag b/tab/gils.tag
deleted file mode 100644 (file)
index 0b35084..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# Tag set for GILS version 2.
-#
-# $Id: gils.tag,v 1.7 1998-10-13 20:52:25 adam Exp $
-name gils
-type 4
-include tagsetm.tag
-include tagsetg.tag
-
-tag 1      controlIdentifier        string
-tag 2      streetAddress            string
-tag 3      city                     string
-tag 4      stateOrProvince          string
-tag 5      zipOrPostalCode          string
-tag 6      hoursOfService           string
-tag 7      resourceDescription      string
-tag 8      technicalPrerequisites   string
-tag 9      westBoundingCoordinate   intUnit
-tag 10     eastBoundingCoordinate   intUnit
-tag 11     northBoundingCoordinate  intUnit
-tag 12     southBoundingCoordinate  intUnit
-tag 13     placeKeyword             string
-tag 14     placeKeywordThesaurus    string
-tag 15     beginningDate            GeneralizedTime
-tag 16     timePeriodTextual        string
-tag 17     linkage                  string
-tag 18     linkageType              string
-tag 19     recordSource             string
-tag 20     controlledTerm           string
-tag 21     subjectThesaurus         string
-tag 22     uncontrolledTerm         string
-tag 23     originalControlIdentifier string
-tag 24     recordReviewDate         GeneralizedTime
-tag 25     generalAccessConstraints string
-tag 26     originatorDisseminationControl string
-tag 27     securityClassificationControl string
-tag 28     orderInformation         string
-tag 29     cost                     bool
-tag 30     costInformation          string
-tag 31     scheduleNumber           string
-tag 32     languageOfResource       string
-tag 33     medium                   string
-tag 34     languageOfRecord         string
-tag 35     relationship             string
-tag 36     endingDate               GeneralizedTime
-tag 51     purpose                  structured
-tag 52     originator               structured
-tag 53     accessConstraints        structured
-tag 54     useConstraints           structured
-tag 55     orderProcess             structured
-tag 56     agencyProgram            structured
-tag 57     sourcesOfData            structured
-tag 58     methodology              structured
-tag 59     supplementalInformation  structured
-tag 70     availability             structured
-tag 71     spatialDomain            structured
-tag 90     distributor              structured
-tag 91     boundingCoordinates      structured
-tag 92     place                    structured
-tag 93     timePeriod               structured
-tag 94     pointOfContact           structured
-tag 95     controlledSubjectIndex   structured
-tag 96     subjectTermsControlled   structured
-tag 97     subjectTermsUncontrolled structured
-tag 98     crossReference           structured
-tag 99     availableLinkage         structured
-tag 100    crossReferenceLinkage    structured
-tag 101    timePeriodStructured     structured
-tag 102    availableTimeStructured  structured
diff --git a/tab/meta-b.est b/tab/meta-b.est
deleted file mode 100644 (file)
index c2fd618..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-simpleelement (1,10)
-simpleelement (1,12)
-simpleelement (2,1)
-simpleelement (1,14)
-simpleelement (4,5)
-simpleelement (2,3)
-simpleelement (2,2):all
diff --git a/tab/meta-usmarc.map b/tab/meta-usmarc.map
deleted file mode 100644 (file)
index 47a2428..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Meta to USMARC conversion
-# $Id: meta-usmarc.map,v 1.2 2002-05-28 21:11:08 adam Exp $
-targetname usmarc
-targetref USmarc
-
-map localControlNumber  /(3,001)
-map dateLastModified    /(3,005)
-
-map subject            /(3,653)/(3,a)
-map title              /(3,245)/(3,a)
-map author             /(3,700)/(3,a)
-map publisher          /(3,260)/(3,b)
-map otheragent                 /(3,710)/(3,a)
-map date               /(3,260)/(3,c)
-map identifier         /(3,024)/(3,a)
-# objectType skipped for now
-map form               /(3,538)/(3,a)
-map relation           /(3,787)/(3,a)    # complexity here
-map language           /(3,041)/(3,a)
-map source             /(3,786)/(3,a)
-# coverage skipped for now
-
-map abstract            /(3,520)/(3,a)
diff --git a/tab/meta.abs b/tab/meta.abs
deleted file mode 100644 (file)
index a15f9f4..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# This is a simple profile based on the Dublin Core of metadata elements.
-#
-# $Id: meta.abs,v 1.6 1998-10-14 14:24:08 perhans Exp $
-
-name meta
-attset bib1.att
-tagset meta.tag
-varset var1.var
-
-esetname F @
-esetname B meta-b.est
-
-maptab meta-usmarc.map
-
-elm (2,1)              title                   Title:w,Title:p
-elm (2,2)              creator                 Author:w,Author:p
-elm (2,21)             subject                 Subject-heading
-elm (2,17)             description             -
-elm (2,31)             publisher               Publisher
-elm (2,32)             contributor             -
-elm (2,4)              date                    Date
-elm (2,22)             type                    Content-type
-elm (2,27)             format                  Material-type
-elm (2,28)             identifier              -
-elm (2,33)             source                  -
-elm (2,20)             language                Code-language
-elm (2,30)             relation                -
-elm (2,34)             coverage                -
-elm (2,29)             rights                  -
-
-# These tags are required by Zebra for GRS-1 generation
-elm (1,10)             rank                    -
-elm (1,14)             localControlNumber      Local-number
diff --git a/tab/meta.tag b/tab/meta.tag
deleted file mode 100644 (file)
index a888c1d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-name meta
-type 4
-include tagsetg.tag
-include tagsetm.tag
diff --git a/tab/summary.abs b/tab/summary.abs
deleted file mode 100644 (file)
index 3144997..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# Summary record abstract syntax
-#
-# $Id: summary.abs,v 1.2 1998-10-13 20:52:27 adam Exp $
-
-name summary
-tagset summary.tag
-attset bib1.att
-reference Summary
-
-elm (4,0)              title                   !
-elm (4,1)              author                  !
-elm (4,2)              callNumber              -
-elm (4,3)              recordType              -
-elm (4,4)              bibliographicLevel      -
-elm (4,5)              formats                 -
-elm (4,5)/(4,6)                format                  -
-elm (4,5)/(4,6)/(4,7)   format-type            -
-elm (4,5)/(4,6)/(4,8)   format-size            -
-elm (4,5)/(4,6)/(4,9)   format-bestPosn                -
-elm (4,10)             publicationPlace        -
-elm (4,11)             publicationDate         -
-elm (4,12)             targetSystemKey         -
-elm (4,13)             satisfyingElement       -
-elm (4,14)             rank                    -
-elm (4,15)             documentId              -
-elm (4,16)             otherInformation        -
diff --git a/tab/summary.tag b/tab/summary.tag
deleted file mode 100644 (file)
index b49edeb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tagset for Summary profile
-#
-# $Id: summary.tag,v 1.2 1998-10-13 20:52:28 adam Exp $
-
-name summary
-type 4
-
-tag    0       title                   string
-tag    1       author                  string
-tag    2       callNumber              string
-tag    3       recordType              string
-tag    4       bibliographicLevel      string
-
-tag    5       formats                 structured
-tag    6       format                  structured
-tag    7       type                    string
-tag    8       size                    numeric
-tag    9       bestPosn                numeric
-
-tag    10      publicationPlace        string
-tag    11      publicationDate         string
-tag    12      targetSystemKey         string
-tag    13      satisfyingElement       string
-tag    14      rank                    numeric
-tag    15      documentId              string
-tag    16      abstract                string
-tag    17      otherInformation        structured
diff --git a/tab/tagsetg.tag b/tab/tagsetg.tag
deleted file mode 100644 (file)
index 7144e63..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# TagSet-G Tags
-# $Id: tagsetg.tag,v 1.4 1998-11-05 10:24:53 quinn Exp $
-name tagsetg
-reference TagsetG
-type 2
-
-tag    1       title                                   string
-tag    2       author                                  string
-tag    3       publicationPlace                        string
-tag    4       publicationDate/date-of-publication     string
-tag    5       documentId                              string
-tag    6       abstract                                string
-tag    7       name                                    string
-tag    8       dateTime                                generalizedtime
-tag    9       displayObject                           octetstring
-tag    10      organization/organisation               string
-tag    11      postalAddress                           string
-tag    12      networkAddress                          string
-tag    13      eMailAddress                            string
-tag    14      phoneNumber/telephone                   string
-tag    15      faxNumber/fax                           string
-tag    16      country                                 string
-tag    17      description                             string
-tag    18      time                                    intunit
-tag    19      documentcontent                         octetstring
-tag    20      language                                string
-tag    21      subject                                 string
-tag    22      resourceType                            string
-tag    23      city                                    string
-tag    24      stateOrProvince                         string
-tag    25      zipOrPostalCode                         string
-tag    26      cost                                    string
-tag    27      format                                  string
-tag    28      identifier                              string
-tag    29      rights                                  string
-tag    30      relation                                string
-tag    31      publisher                               string
-tag    32      contributor                             string
-tag    33      source                                  string
-tag    34      coverage                                string
-tag    35      private                                 string
diff --git a/tab/tagsetm.tag b/tab/tagsetm.tag
deleted file mode 100644 (file)
index 37b8111..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# TagSet-M Tags
-#
-# $Id: tagsetm.tag,v 1.5 1998-10-13 20:52:29 adam Exp $
-name tagsetm
-reference TagsetM
-type 1
-
-tag    1       schemaIdentifier                oid
-tag    2       elementsOrdered                 bool
-tag    3       elementOrdering                 int
-tag    4       defaultTagType                  int
-tag    5       defaultVariantSetId             oid
-tag    6       defaultVariantSpec              structured
-tag    7       processingInstructions          string
-tag    8       recordUsage                     int
-tag    9       restriction                     string
-tag    10      rank                            int
-tag    11      userMessage                     string
-tag    12      url                             string
-tag    13      record                          structured
-tag    14      local-control-number            string
-tag    15      creation-date                   generalizedtime
-tag    16      dateOfLastModification/lastModified generalizedtime
-tag    17      dateOfLastReview                generalizedtime
-tag    18      score                           int
-tag    19      wellKnown                       string
-tag    20      recordWrapper                   structured
-tag    21      defaultTagSetId                 oid
-tag    22      languageOfRecord                string
-tag    23      type                            string
-tag    24      scheme                          string
-tag    25      costInfo                        string
-tag    26      costFlag                        bool
diff --git a/tab/usmarc-b.est b/tab/usmarc-b.est
deleted file mode 100644 (file)
index 9a36353..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-simpleelement (3,'001)
-simpleelement (3,'035)
-simpleelement (3,'245)
-simpleelement (3,'100)
-simpleelement (3,'710)
-simpleelement (3,'700)
diff --git a/tab/usmarc.abs b/tab/usmarc.abs
deleted file mode 100644 (file)
index ed05d92..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# $Id: usmarc.abs,v 1.6 1998-10-13 20:52:30 adam Exp $
-name usmarc
-reference USmarc
-attset bib1.att
-tagset usmarc.tag
-
-marc usmarc.mar
-
-esetname B usmarc-b.est
-esetname F @
-
-# All 245 subfields mapped to title (word) and 
-# 245 subfield a mapped to tile (phrase).
-elm 245                        title           -
-elm 245/?              title           !:w
-elm 245/?/a            title           !:w,!:p
-
-# 100 mapped to Author-name-personal and Author.
-elm 100                        Author-name-personal    -
-elm 100/?              Author-name-personal    !:w,!:p,Author:w,Author:p
-
-# 110 mapped to Author-name-corporate and Author
-elm 110                        Author-name-corporate   -
-elm 110/?              Author-name-corporate   !:w,!:p,Author:w,Author:p
-
-# 111 mapped to Author-name-conference and Author
-elm 111                        Author-name-conference  -
-elm 111/?              Author-name-conference  !:w,!:p,Author:w,Author:p
-
-# Tag 260 subfield a mapped to Place-publication
-elm 260                        Place-publication       -
-elm 260/?              Place-publication       -
-elm 260/?/a            Place-publication       !:w
-elm 260/?/b            Publisher               !:w
-elm 260/?/c            Date                    !:w
-
diff --git a/tab/usmarc.mar b/tab/usmarc.mar
deleted file mode 100644 (file)
index 32149d6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# $Id: usmarc.mar,v 1.2 1998-10-13 20:52:31 adam Exp $
-name usmarc
-reference USmarc
diff --git a/tab/usmarc.tag b/tab/usmarc.tag
deleted file mode 100644 (file)
index 8c48894..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Pseudo-tagset for USMARC
-#
-# $Id: usmarc.tag,v 1.2 1998-10-13 20:52:32 adam Exp $
-
-name usmarc
-type 4
-include tagsetm.tag
-
-#tag 1         a               string
-#tag 2         b               string
-tag 245                245             string
-tag 100                100             string
diff --git a/tab/var1.var b/tab/var1.var
deleted file mode 100644 (file)
index 89e0799..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# Definition of the variant set Variant-1.
-# Variant triple syntax is '<VAR class type value>'. Eg.
-# <var body iana "application/postscript"> or <var lang lang "eng">.
-#
-# $Id: var1.var,v 1.3 1998-10-13 20:52:33 adam Exp $
-
-name variant-1
-reference Variant-1
-
-class 1 variantId
-
-  type 1       variantId               octetstring
-
-class 2 body
-
-  type 1       iana                    string
-  type 2       z39.50                  string
-  type 3       other                   string
-
-class 3 format
-
-  type 1       characters-per-line     int
-  type 2       line-length             int
-
-  # More types here......
-
-class 4 lang
-
-  type 1       lang                    string
-  type 2       charset                 int
-  type 3       charset-id              oid
-  type 4       encoding-id             oid
-  type 5       private-string          string
-
-class 5 piece
-
-  type 1       fragment-wanted         int
-  type 2       fragment-returned       int
-  type 3       start                   intunit
-  type 4       end                     intunit
-  type 5       howmuch                 intunit
-  type 6       step                    intunit
-  type 7       targettoken             octetstring
-
-class 6 metadata-requested
-
-  type 1       cost                    intunit
-  type 2       size                    intunit
-  type 3       hitsvar                 null
-  type 4       hitsnonvar              null
-  type 5       variantlist             null
-  type 6       isvariantsupported      null
-  type 7       documentdescriptor      null
-  type 8       surrogateinformation    null
-  type 998     allmetadata             null
-  type 999     othermetadata           oid
-
-class 7        metadata-returned
-
-  type 1       cost                    intunit
-
-  # More...
-
-# More classes, too...
diff --git a/tab/wais-b.est b/tab/wais-b.est
deleted file mode 100644 (file)
index 4100a20..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# WAIS eset.
-#
-
-simpleelement (2,1)
-simpleelement (2,7)
-simpleelement (1,16)
-simpleelement (1,18)
-simpleelement (1,14)
diff --git a/tab/wais-variant.est b/tab/wais-variant.est
deleted file mode 100644 (file)
index 9e17d26..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# WAIS variant eset.
-#
-
-#
-# Default is no data, variant-list, please.
-#
-
-simpleelement ?:all variant (9,1,@) (6,5,@)
-
-#
-# Empty variant-requests for the well-known elements to override default.
-#
-
-simpleelement (2,1) variant
-simpleelement (2,7) variant
-simpleelement (1,16) variant
-simpleelement (1,18) variant
-simpleelement (1,14) variant
diff --git a/tab/wais.abs b/tab/wais.abs
deleted file mode 100644 (file)
index 839f0a2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# WAIS profile
-#
-# $Id: wais.abs,v 1.5 1998-10-13 20:52:34 adam Exp $
-
-name wais
-reference WAIS-schema
-attset bib1.att
-tagset generic.tag
-
-varset var1.var
-
-esetname B wais-b.est
-esetname F @
-esetname VARIANT wais-variant.est
-
-elm (2,1)              Title                   !:p,!:w
-elm (2,7)              Name                    !:p,!:w
-elm (2,8)              Date                    !
-elm (1,18)             Score                   -
-elm (1,14)             RecordId                Local-number
-
-# Tags below this point are unofficial.
-
-elm Body               BodyOfText              !