SRW, CQL, 2003
[yaz-moved-to-github.git] / odr / odr_oct.c
index 008aaa1..73b7088 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 1995-2002, Index Data
+ * Copyright (c) 1995-2003, Index Data
  * See the file LICENSE for details.
  * Sebastian Hammer, Adam Dickmeiss
  *
- * $Id: odr_oct.c,v 1.17 2002-07-25 12:51:08 adam Exp $
+ * $Id: odr_oct.c,v 1.20 2003-01-06 08:20:27 adam Exp $
  */
 #if HAVE_CONFIG_H
 #include <config.h>
@@ -137,19 +137,19 @@ int odr_iconv_string(ODR o, char **p, int opt, const char *name)
     if (o->direction == ODR_ENCODE)
     {
         t->buf = 0;
-#if HAVE_ICONV_H
-        if (o->op->iconv_handle != (iconv_t)(-1))
+
+        if (o->op->iconv_handle != 0)
         {
             size_t inleft = strlen(*p);
             char *inbuf = *p;
             size_t outleft = 4 * inleft + 2;
-            char *outbuf = odr_malloc (o, outleft);
+            char *outbuf = (char *) odr_malloc (o, outleft);
             size_t ret;
             
-            t->buf = outbuf;
+            t->buf = (unsigned char *) outbuf;
             
-            ret = iconv (o->op->iconv_handle, &inbuf, &inleft,
-                         &outbuf, &outleft);
+            ret = yaz_iconv (o->op->iconv_handle, &inbuf, &inleft,
+                             &outbuf, &outleft);
             if (ret == (size_t)(-1))
             {
                 o->error = ODATA;
@@ -157,7 +157,6 @@ int odr_iconv_string(ODR o, char **p, int opt, const char *name)
             }
             t->size = t->len = outbuf - (char*) t->buf;
         }
-#endif
         if (!t->buf)
         {
             t->buf = (unsigned char *) *p;
@@ -175,19 +174,19 @@ int odr_iconv_string(ODR o, char **p, int opt, const char *name)
     if (o->direction == ODR_DECODE)
     {
         *p = 0;
-#if HAVE_ICONV_H
-        if (o->op->iconv_handle != (iconv_t)(-1))
+
+        if (o->op->iconv_handle != 0)
         {
             size_t inleft = t->len;
-            char *inbuf = t->buf;
+            char *inbuf = (char *) t->buf;
             size_t outleft = 4 * inleft + 2;
-            char *outbuf = odr_malloc (o, outleft);
+            char *outbuf = (char *) odr_malloc (o, outleft);
             size_t ret;
 
             *p = outbuf;
             
-            ret = iconv (o->op->iconv_handle, &inbuf, &inleft,
-                         &outbuf, &outleft);
+            ret = yaz_iconv (o->op->iconv_handle, &inbuf, &inleft,
+                             &outbuf, &outleft);
             if (ret == (size_t)(-1))
             {
                 o->error = ODATA;
@@ -197,7 +196,6 @@ int odr_iconv_string(ODR o, char **p, int opt, const char *name)
             
             (*p)[inleft] = '\0';    /* null terminate it */
         }
-#endif
         if (!*p)
         {
             *p = (char *) t->buf;