X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=data1%2Fd1_marc.c;h=3ef817260fee9ceec382ace518cf81b39f396571;hb=e92856ea4fecc1a5ea6875ad47797d462fd5fcae;hp=a04ef8949c9c0d3cbcaca9ce8b4f678d6880642a;hpb=724a7b03b740187d1f68e3b97dcadd5169381bce;p=idzebra-moved-to-github.git diff --git a/data1/d1_marc.c b/data1/d1_marc.c index a04ef89..3ef8172 100644 --- a/data1/d1_marc.c +++ b/data1/d1_marc.c @@ -1,4 +1,4 @@ -/* $Id: d1_marc.c,v 1.12 2005-02-02 19:37:27 adam Exp $ +/* $Id: d1_marc.c,v 1.15 2006-06-08 10:33:19 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -44,10 +44,7 @@ data1_marctab *data1_read_marctab (data1_handle dh, const char *file) int argc; if (!(f = data1_path_fopen(dh, file, "r"))) - { - yaz_log(YLOG_WARN|YLOG_ERRNO, "%s", file); return 0; - } res->name = 0; res->reference = VAL_NONE; @@ -315,7 +312,11 @@ static int nodetomarc(data1_handle dh, for (; subf; subf = subf->next) { if (!control_field) + { + if (marc_xml && subf->which != DATA1N_tag) + continue; /* we skip comments, cdata .. */ len += p->identifier_length; + } get_data(subf, &dlen, control_field ? 0 : 1); len += dlen; } @@ -416,14 +417,16 @@ static int nodetomarc(data1_handle dh, const char *identifier = "a"; if (marc_xml) { - if (subf->which == DATA1N_tag && - !strcmp(subf->u.tag.tag, "subfield")) - { - data1_xattr *xa; - for (xa = subf->u.tag.attributes; xa; xa = xa->next) - if (!strcmp(xa->name, "code")) - identifier = xa->value; - } + data1_xattr *xa; + if (subf->which != DATA1N_tag) + continue; + if (strcmp(subf->u.tag.tag, "subfield")) + yaz_log(YLOG_WARN, "Unhandled tag %s", + subf->u.tag.tag); + + for (xa = subf->u.tag.attributes; xa; xa = xa->next) + if (!strcmp(xa->name, "code")) + identifier = xa->value; } else if (subf->which != DATA1N_tag) yaz_log(YLOG_WARN, "Malformed fields for marc output."); @@ -479,3 +482,11 @@ char *data1_nodetomarc(data1_handle dh, data1_marctab *p, data1_node *n, *len = nodetomarc(dh, p, n, selected, buf, size); return *buf; } +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +