From 63e91c98a6e38a245e90c394d7997175f2b0900f Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 26 Oct 2006 23:46:48 +0000 Subject: [PATCH] Introduce function data1_absyn_getmarctab, data1_absyn_getelements. --- data1/d1_absyn.c | 16 +++++++++++++++- include/data1.h | 9 ++++++++- recctrl/marcread.c | 8 ++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/data1/d1_absyn.c b/data1/d1_absyn.c index a45d51c..5df30fc 100644 --- a/data1/d1_absyn.c +++ b/data1/d1_absyn.c @@ -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) diff --git a/include/data1.h b/include/data1.h index cce6457..89f75cf 100644 --- a/include/data1.h +++ b/include/data1.h @@ -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, diff --git a/recctrl/marcread.c b/recctrl/marcread.c index dfdffdc..88fa00d 100644 --- a/recctrl/marcread.c +++ b/recctrl/marcread.c @@ -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; -- 1.7.10.4