+ int r = yaz_marc_read_xml(mt, ptr);
+ if (r)
+ {
+ no_errors++;
+ fprintf(stderr, "yaz_marc_read_xml failed\n");
+ }
+ else
+ {
+ int write_rc = yaz_marc_write_mode(mt, wrbuf);
+ if (write_rc)
+ {
+ yaz_log(YLOG_WARN, "yaz_marc_write_mode: "
+ "write error: %d", write_rc);
+ no_errors++;
+ }
+ fputs(wrbuf_cstr(wrbuf), stdout);
+ wrbuf_rewind(wrbuf);
+ }
+ }
+ xmlFree(name);
+ }
+ }
+ xmlFreeTextReader(reader);
+ }
+#else
+ xmlDocPtr doc = xmlParseFile(fname);
+ if (doc)
+ {
+ xmlNodePtr ptr = xmlDocGetRootElement(doc);
+ for (; ptr; ptr = ptr->next)
+ {
+ if (ptr->type == XML_ELEMENT_NODE)
+ {
+ if (!strcmp((const char *) ptr->name, "collection"))
+ {
+ ptr = ptr->children;
+ continue;
+ }
+ if (!strcmp((const char *) ptr->name, "record") ||
+ !strcmp((const char *) ptr->name, "r"))
+ {
+ int r = yaz_marc_read_xml(mt, ptr);
+ if (r)
+ {
+ no_errors++;
+ fprintf(stderr, "yaz_marc_read_xml failed\n");
+ }
+ else
+ {
+ yaz_marc_write_mode(mt, wrbuf);