Introduce function data1_absyn_getmarctab, data1_absyn_getelements.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 26 Oct 2006 23:46:48 +0000 (23:46 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 26 Oct 2006 23:46:48 +0000 (23:46 +0000)
data1/d1_absyn.c
include/data1.h
recctrl/marcread.c

index a45d51c..5df30fc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: d1_absyn.c,v 1.9.2.10 2006-09-29 10:02:42 adam Exp $
+/* $Id: d1_absyn.c,v 1.9.2.11 2006-10-26 23:46:48 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
    Index Data Aps
 
@@ -538,6 +538,20 @@ int read_absyn_line(FILE *f, int *lineno, char *line, int len,
     return argc;
 }
 
+data1_marctab *data1_absyn_getmarctab(data1_handle dh, data1_node *root)
+{
+    if (root->u.root.absyn)
+        return root->u.root.absyn->marc;
+    return 0;
+}
+
+data1_element *data1_absyn_getelements(data1_handle dh,
+                                       data1_node *root)
+{
+    if (root->u.root.absyn)
+        return root->u.root.absyn->main_elements;
+    return 0;
+}
 
 data1_absyn *data1_read_absyn (data1_handle dh, const char *file,
                                int file_must_exist)
index cce6457..89f75cf 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: data1.h,v 1.9.2.4 2006-09-29 10:02:43 adam Exp $
+/* $Id: data1.h,v 1.9.2.5 2006-10-26 23:46:48 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -445,6 +445,13 @@ YAZ_EXPORT data1_node *data1_mk_tag_data_text_uni (data1_handle dh,
 
 YAZ_EXPORT data1_absyn *data1_get_absyn (data1_handle dh, const char *name);
 
+YAZ_EXPORT
+data1_marctab *data1_absyn_getmarctab(data1_handle dh, data1_node *root);
+
+YAZ_EXPORT
+data1_element *data1_absyn_getelements(data1_handle dh,
+                                      data1_node *root);
+
 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, 
index dfdffdc..88fa00d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: marcread.c,v 1.24.2.5 2006-10-12 10:13:33 adam Exp $
+/* $Id: marcread.c,v 1.24.2.6 2006-10-26 23:46:49 adam Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -109,7 +109,7 @@ static data1_node *grs_read_iso2709 (struct grs_read_info *p, int marc_xml)
     else
        res_top = data1_mk_tag (p->dh, p->mem, absynName, 0, res_root);
 
-    if ((marctab = res_root->u.root.absyn->marc))
+    if ((marctab = data1_absyn_getmarctab(p->dh, res_root)))
     {
        memcpy(marctab->leader, buf, 24);
         memcpy(marctab->implementation_codes, buf+6, 4);
@@ -789,7 +789,7 @@ data1_node *grs_read_marcxml(struct grs_read_info *p)
     if (!root)
        return 0;
        
-    for (e=root->u.root.absyn->main_elements; e; e=e->next)
+    for (e = data1_absyn_getelements(p->dh, root); e; e=e->next)
     {
        data1_tag *tag = e->tag;
        
@@ -808,7 +808,7 @@ data1_node *grs_read_marc(struct grs_read_info *p)
     if (!root)
        return 0;
        
-    for (e=root->u.root.absyn->main_elements; e; e=e->next)
+    for (e = data1_absyn_getelements(p->dh, root); e; e=e->next)
     {
        data1_tag *tag = e->tag;