aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj/convert
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/gcj/convert')
-rw-r--r--libjava/gnu/gcj/convert/Output_EUCJIS.java7
-rw-r--r--libjava/gnu/gcj/convert/Output_SJIS.java7
-rw-r--r--libjava/gnu/gcj/convert/Output_UTF8.java9
-rw-r--r--libjava/gnu/gcj/convert/UnicodeToBytes.java13
-rw-r--r--libjava/gnu/gcj/convert/natIconv.cc3
5 files changed, 35 insertions, 4 deletions
diff --git a/libjava/gnu/gcj/convert/Output_EUCJIS.java b/libjava/gnu/gcj/convert/Output_EUCJIS.java
index 0662239aa85..c0cc4378b26 100644
--- a/libjava/gnu/gcj/convert/Output_EUCJIS.java
+++ b/libjava/gnu/gcj/convert/Output_EUCJIS.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 1999, 2003 Free Software Foundation
This file is part of libgcj.
@@ -22,6 +22,11 @@ public class Output_EUCJIS extends UnicodeToBytes
public native int write (String str, int inpos, int inlength, char[] work);
+ public boolean havePendingBytes()
+ {
+ return pending1 >= 0;
+ }
+
int pending1 = -1;
int pending2;
}
diff --git a/libjava/gnu/gcj/convert/Output_SJIS.java b/libjava/gnu/gcj/convert/Output_SJIS.java
index c5370642378..67470ba7803 100644
--- a/libjava/gnu/gcj/convert/Output_SJIS.java
+++ b/libjava/gnu/gcj/convert/Output_SJIS.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation
+/* Copyright (C) 1999, 2003 Free Software Foundation
This file is part of libgcj.
@@ -22,5 +22,10 @@ public class Output_SJIS extends UnicodeToBytes
public native int write (String str, int inpos, int inlength, char[] work);
+ public boolean havePendingBytes()
+ {
+ return pending >= 0;
+ }
+
int pending = -1;
}
diff --git a/libjava/gnu/gcj/convert/Output_UTF8.java b/libjava/gnu/gcj/convert/Output_UTF8.java
index 01f5ce890e3..f54e7ebcfc2 100644
--- a/libjava/gnu/gcj/convert/Output_UTF8.java
+++ b/libjava/gnu/gcj/convert/Output_UTF8.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2003 Free Software Foundation
This file is part of libgcj.
@@ -104,6 +104,7 @@ public class Output_UTF8 extends UnicodeToBytes
{
value = (hi_part - 0xD800) * 0x400 + (ch - 0xDC00) + 0x10000;
buf[count++] = (byte) (0xF0 | (value >> 18));
+ avail--;
bytes_todo = 3;
hi_part = 0;
}
@@ -118,4 +119,10 @@ public class Output_UTF8 extends UnicodeToBytes
}
return inpos - start_pos;
}
+
+ public boolean havePendingBytes()
+ {
+ return bytes_todo > 0;
+ }
+
}
diff --git a/libjava/gnu/gcj/convert/UnicodeToBytes.java b/libjava/gnu/gcj/convert/UnicodeToBytes.java
index 8181cb83109..0785d7ea43e 100644
--- a/libjava/gnu/gcj/convert/UnicodeToBytes.java
+++ b/libjava/gnu/gcj/convert/UnicodeToBytes.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation
This file is part of libgcj.
@@ -146,6 +146,17 @@ public abstract class UnicodeToBytes extends IOConverter
return write(work, 0, srcEnd - inpos);
}
+ /**
+ * Returns true when the converter has consumed some bytes that are
+ * not yet converted to characters because further continuation
+ * bytes are needed. Defaults to false, should be overridden by
+ * decoders that internally store some bytes.
+ */
+ public boolean havePendingBytes()
+ {
+ return false;
+ }
+
/** Indicate that the converter is resuable.
* This class keeps track of converters on a per-encoding basis.
* When done with an encoder you may call this method to indicate
diff --git a/libjava/gnu/gcj/convert/natIconv.cc b/libjava/gnu/gcj/convert/natIconv.cc
index 0ed8606f94b..7b7ec64488e 100644
--- a/libjava/gnu/gcj/convert/natIconv.cc
+++ b/libjava/gnu/gcj/convert/natIconv.cc
@@ -268,6 +268,9 @@ gnu::gcj::convert::IOConverter::iconv_init (void)
// Conversion must be complete for us to use the result.
if (r != (size_t) -1 && inc == 0 && outc == 0)
result = (c != 0xfeff);
+
+ // Release iconv handle.
+ iconv_close (handle);
}
#endif /* HAVE_ICONV */
return result;