diff options
Diffstat (limited to 'libjava/gnu/gcj/convert')
-rw-r--r-- | libjava/gnu/gcj/convert/Output_EUCJIS.java | 7 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/Output_SJIS.java | 7 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/Output_UTF8.java | 9 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/UnicodeToBytes.java | 13 | ||||
-rw-r--r-- | libjava/gnu/gcj/convert/natIconv.cc | 3 |
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; |