Added support for string components in simpleelement specs. Supported
[idzebra-moved-to-github.git] / data1 / d1_read.c
index 742e170..4a96ec3 100644 (file)
@@ -1,6 +1,6 @@
-/* $Id: d1_read.c,v 1.9 2004-08-04 08:35:22 adam Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
-   Index Data Aps
+/* $Id: d1_read.c,v 1.15 2005-01-17 22:12:34 adam Exp $
+   Copyright (C) 1995-2005
+   Index Data ApS
 
 This file is part of the Zebra server.
 
@@ -29,10 +29,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <stdio.h>
 #include <stdlib.h>
 
-#include <yaz/xmalloc.h>
 #include <yaz/yaz-util.h>
-#include <yaz/log.h>
-#include <data1.h>
+#include <d1_absyn.h>
 
 data1_node *data1_get_root_tag (data1_handle dh, data1_node *n)
 {
@@ -118,7 +116,7 @@ static void data1_init_node (data1_handle dh, data1_node *r, int type)
         r->u.preprocess.attributes = 0;
         break;
     default:
-       logf (LOG_WARN, "data_mk_node_type. bad type = %d\n", type);
+       yaz_log (YLOG_WARN, "data_mk_node_type. bad type = %d\n", type);
     }
 }
 
@@ -194,7 +192,7 @@ data1_node *data1_mk_root (data1_handle dh, NMEM nmem, const char *name)
     data1_node *res;
     if (!absyn)
     {
-        yaz_log(LOG_WARN, "Unable to acquire abstract syntax " "for '%s'",
+        yaz_log(YLOG_WARN, "Unable to acquire abstract syntax " "for '%s'",
                 name); 
         /* It's now OK for a record not to have an absyn */
     }
@@ -786,7 +784,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m,
            }
            if (amp || c != '>')
            {
-               yaz_log(LOG_WARN, "d1: %d: Malformed tag", line);
+               yaz_log(YLOG_WARN, "d1: %d: Malformed tag", line);
                return 0;
            }
            else
@@ -814,7 +812,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m,
                    }
                    if (i != level)
                    {
-                       yaz_log (LOG_WARN, "%d: no begin tag for %s",
+                       yaz_log (YLOG_WARN, "%d: no begin tag for %s",
                                 line, tag);
                        break;
                    }
@@ -839,7 +837,7 @@ data1_node *data1_read_nodex (data1_handle dh, NMEM m,
                
                if (sscanf(args, "%s %s %n", tclass, type, &val_offset) != 2)
                {
-                   yaz_log(LOG_WARN, "Malformed variant triple at '%s'", tag);
+                   yaz_log(YLOG_WARN, "Malformed variant triple at '%s'", tag);
                    continue;
                }
                if (!(tp =
@@ -1110,12 +1108,15 @@ int data1_iconv (data1_handle dh, NMEM m, data1_node *n,
     if (yaz_matchstr (tocode, fromcode))
     {
         WRBUF wrbuf = wrbuf_alloc();
-        yaz_iconv_t t = yaz_iconv_open (tocode, fromcode);
+        yaz_iconv_t t = yaz_iconv_open(tocode, fromcode);
         if (!t)
+       {
+            wrbuf_free(wrbuf, 1);
             return -1;
-        data1_iconv_s (dh, m, n, t, wrbuf, tocode);
-        yaz_iconv_close (t);
-        wrbuf_free (wrbuf, 1);
+       }
+        data1_iconv_s(dh, m, n, t, wrbuf, tocode);
+        yaz_iconv_close(t);
+        wrbuf_free(wrbuf, 1);
     }
     return 0;
 }