Version 5.0.1
[yaz-moved-to-github.git] / util / marcdump.c
index e0491c4..891174b 100644 (file)
@@ -133,8 +133,7 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname)
             int type = xmlTextReaderNodeType(reader);
             if (type == XML_READER_TYPE_ELEMENT)
             {
-                const char *name = (const char *)
-                    xmlTextReaderLocalName(reader);
+                char *name = (char *) xmlTextReaderLocalName(reader);
                 if (!strcmp(name, "record") || !strcmp(name, "r"))
                 {
                     xmlNodePtr ptr = xmlTextReaderExpand(reader);
@@ -158,8 +157,10 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname)
                         wrbuf_rewind(wrbuf);
                     }
                 }
+                xmlFree(name);
             }
         }
+        xmlFreeTextReader(reader);
     }
 #else
     xmlDocPtr doc = xmlParseFile(fname);
@@ -398,7 +399,10 @@ static void dump(const char *fname, const char *from, const char *to,
                 {
                     if ((i & 15) == 0)
                         fprintf(cfile, "  \"");
-                    fprintf(cfile, "\\x%02X", p[i] & 255);
+                    if (p[i] < 32 || p[i] > 126)
+                        fprintf(cfile, "\" \"\\x%02X\" \"", p[i] & 255);
+                    else
+                        fputc(p[i], cfile);
 
                     if (i < r - 1 && (i & 15) == 15)
                         fprintf(cfile, "\"\n");