natIconv.cc (iconv_adapter): New function.
authorTom Tromey <tromey@cygnus.com>
Fri, 16 Jun 2000 01:11:12 +0000 (01:11 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 16 Jun 2000 01:11:12 +0000 (01:11 +0000)
* gnu/gcj/convert/natIconv.cc (iconv_adapter): New function.
(read): Use it.
(write): Likewise.

From-SVN: r34570

libjava/ChangeLog
libjava/gnu/gcj/convert/natIconv.cc

index 4ab49c89a3b30be4c0d987200ba2db9089668581..70d443047284c95b85ca385ceff0ae3f7f8bdcb6 100644 (file)
@@ -1,3 +1,9 @@
+2000-06-15  Tom Tromey  <tromey@cygnus.com>
+
+       * gnu/gcj/convert/natIconv.cc (iconv_adapter): New function.
+       (read): Use it.
+       (write): Likewise.
+
 2000-06-15  Bryce McKinlay  <bryce@albatross.co.nz>
 
        Fix for PR java.lang/258:
index b3eead852d3295efd8aa7806d9fb4b9cab588555..7875e9b7922bddafe1cd6c4cccb6e8e67e9bda37 100644 (file)
@@ -21,6 +21,16 @@ details.  */
 
 #ifdef HAVE_ICONV
 #include <iconv.h>
+
+template<typename T>
+static inline size_t
+iconv_adapter (size_t (*iconv_f) (iconv_t, T, size_t *, char **, size_t *),
+              iconv_t handle, char **inbuf, size_t *inavail,
+              char **outbuf, size_t *outavail)
+{
+  return (*iconv_f) (handle, (T) inbuf, inavail, outbuf, outavail);
+}
+
 #endif
 
 void
@@ -69,12 +79,12 @@ gnu::gcj::convert::Input_iconv::read (jcharArray outbuffer,
   size_t outavail = count;
   size_t old_out = outavail;
 
-  const char *inbuf = (const char *) &bytes[inpos];
+  char *inbuf = (char *) &bytes[inpos];
   char *outbuf = (char *) &out[outpos];
 
-  size_t r = iconv ((iconv_t) handle,
-                   &inbuf, &inavail,
-                   &outbuf, &outavail);
+  size_t r = iconv_adapter (iconv, (iconv_t) handle,
+                           &inbuf, &inavail,
+                           &outbuf, &outavail);
   // FIXME: what if R==-1?
 
   inpos += old_in - inavail;
@@ -132,12 +142,12 @@ gnu::gcj::convert::Output_iconv::write (jcharArray inbuffer,
   size_t outavail = buf->length - count;
   size_t old_out = outavail;
 
-  const char *inbuf = (const char *) &chars[inpos];
+  char *inbuf = (char *) &chars[inpos];
   char *outbuf = (char *) &out[count];
 
-  size_t r = iconv ((iconv_t) handle,
-                   &inbuf, &inavail,
-                   &outbuf, &outavail);
+  size_t r = iconv_adapter (iconv, (iconv_t) handle,
+                           &inbuf, &inavail,
+                           &outbuf, &outavail);
   // FIXME: what if R==-1?
 
   count += old_out - outavail;