Version 3.0.49. Update news.
[yaz-moved-to-github.git] / src / marc_read_xml.c
index 2642dd4..3f5d29b 100644 (file)
@@ -1,8 +1,6 @@
-/*
- * Copyright (C) 1995-2006, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2009 Index Data
  * See the file LICENSE for details.
- *
- * $Id: marc_read_xml.c,v 1.1 2006-12-15 12:37:18 adam Exp $
  */
 
 /**
@@ -74,7 +72,7 @@ int yaz_marc_read_xml_subfields(yaz_marc_t mt, const xmlNode *ptr)
                 for (p = ptr->children; p ; p = p->next)
                     if (p->type == XML_TEXT_NODE)
                         ctrl_data_len += strlen((const char *)p->content);
-                ctrl_data_buf = nmem_malloc(nmem, ctrl_data_len+1);
+                ctrl_data_buf = (char *) nmem_malloc(nmem, ctrl_data_len+1);
                 strcpy(ctrl_data_buf, (const char *)ptr_code->content);
                 for (p = ptr->children; p ; p = p->next)
                     if (p->type == XML_TEXT_NODE)
@@ -118,7 +116,6 @@ static int yaz_marc_read_xml_leader(yaz_marc_t mt, const xmlNode **ptr_p)
             {
                 yaz_marc_cprintf(
                     mt, "Expected element 'leader', got '%.80s'", ptr->name);
-                return -1;
             }
         }
     if (!leader)
@@ -194,7 +191,6 @@ static int yaz_marc_read_xml_fields(yaz_marc_t mt, const xmlNode *ptr)
                         yaz_marc_cprintf(
                             mt, "Bad attribute '%.80s' for 'datafield'",
                             attr->name);
-                        return -1;
                     }
                 if (!ptr_tag)
                 {
@@ -221,9 +217,11 @@ static int yaz_marc_read_xml_fields(yaz_marc_t mt, const xmlNode *ptr)
 }
 #endif
 
+#if YAZ_HAVE_XML2
 int yaz_marc_read_xml(yaz_marc_t mt, const xmlNode *ptr)
 {
-#if YAZ_HAVE_XML2
+    yaz_marc_reset(mt);
+
     for(; ptr; ptr = ptr->next)
         if (ptr->type == XML_ELEMENT_NODE)
         {
@@ -247,15 +245,14 @@ int yaz_marc_read_xml(yaz_marc_t mt, const xmlNode *ptr)
     if (yaz_marc_read_xml_leader(mt, &ptr))
         return -1;
     return yaz_marc_read_xml_fields(mt, ptr->next);
-#else
-    return -1;
-#endif
 }
+#endif
 
 
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab