aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/Makefile.am2
-rw-r--r--libjava/Makefile.in12
-rw-r--r--libjava/gnu/gcj/convert/IOConverter.java4
-rw-r--r--libjava/gnu/gcj/convert/Input_UnicodeBig.java49
-rw-r--r--libjava/gnu/gcj/convert/Input_UnicodeLittle.java49
6 files changed, 119 insertions, 5 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 27fbd60..1b96246 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2004-03-19 Per Bothner <per@bothner.com>
+
+ * gnu/gcj/convert/Input_UnicodeBig.java: New class..
+ * gnu/gcj/convert/Input_UnicodeLittle.java: New class.
+ * Makefile.am: Update accordingly.
+ * gnu/gcj/convert/IOConverter.java: Define "utf-16le" and "utf16be"
+ as aliases for UnicodeLittle and UnicodeBig.
+
2004-03-20 Mark Wielaard <mark@klomp.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index a5bef0a..254c9ca 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -882,6 +882,8 @@ gnu/gcj/convert/Input_ASCII.java \
gnu/gcj/convert/Input_EUCJIS.java \
gnu/gcj/convert/Input_JavaSrc.java \
gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UnicodeBig.java \
+gnu/gcj/convert/Input_UnicodeLittle.java \
gnu/gcj/convert/Input_UTF8.java \
gnu/gcj/convert/Input_iconv.java \
gnu/gcj/convert/IOConverter.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index cf0fc0f..e664a10 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -565,6 +565,8 @@ gnu/gcj/convert/Input_ASCII.java \
gnu/gcj/convert/Input_EUCJIS.java \
gnu/gcj/convert/Input_JavaSrc.java \
gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UnicodeBig.java \
+gnu/gcj/convert/Input_UnicodeLittle.java \
gnu/gcj/convert/Input_UTF8.java \
gnu/gcj/convert/Input_iconv.java \
gnu/gcj/convert/IOConverter.java \
@@ -3007,6 +3009,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/gcj/convert/Input_EUCJIS.P \
.deps/gnu/gcj/convert/Input_JavaSrc.P \
.deps/gnu/gcj/convert/Input_SJIS.P .deps/gnu/gcj/convert/Input_UTF8.P \
+.deps/gnu/gcj/convert/Input_UnicodeBig.P \
+.deps/gnu/gcj/convert/Input_UnicodeLittle.P \
.deps/gnu/gcj/convert/Input_iconv.P \
.deps/gnu/gcj/convert/JIS0208_to_Unicode.P \
.deps/gnu/gcj/convert/JIS0212_to_Unicode.P \
@@ -4977,7 +4981,7 @@ maintainer-clean-recursive:
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
- test "$$subdir" != "." || dot_seen=yes; \
+ test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
@@ -5019,7 +5023,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
diff --git a/libjava/gnu/gcj/convert/IOConverter.java b/libjava/gnu/gcj/convert/IOConverter.java
index 0f869c6..ba3260a 100644
--- a/libjava/gnu/gcj/convert/IOConverter.java
+++ b/libjava/gnu/gcj/convert/IOConverter.java
@@ -63,7 +63,9 @@ public abstract class IOConverter
hash.put ("extended_unix_code_packed_format_for_japanese", "EUCJIS");
hash.put ("cseucpkdfmtjapanese", "EUCJIS");
hash.put ("euc-jp", "EUCJIS");
-
+ hash.put ("euc-jp", "EUCJIS");
+ hash.put ("utf-16le", "UnicodeLittle");
+ hash.put ("utf-16be", "UnicodeBig");
iconv_byte_swap = iconv_init ();
}
diff --git a/libjava/gnu/gcj/convert/Input_UnicodeBig.java b/libjava/gnu/gcj/convert/Input_UnicodeBig.java
new file mode 100644
index 0000000..c8da2b9
--- /dev/null
+++ b/libjava/gnu/gcj/convert/Input_UnicodeBig.java
@@ -0,0 +1,49 @@
+/* Copyright (C) 2004 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package gnu.gcj.convert;
+
+public class Input_UnicodeBig extends BytesToUnicode
+{
+ /** 0, 8, or 16 bits of a partially constructed character. */
+ char partial;
+ /** How many bytes of partial are valid. */
+ int partial_count;
+
+ public String getName() { return "UnicodeBig"; }
+
+ public int read (char[] outbuffer, int outpos, int count)
+ {
+ int origcount = count;
+ for (;;)
+ {
+ if (partial_count == 2)
+ {
+ if (count == 0)
+ break;
+ if (partial == 0xFEFF)
+ ; // drop byte order mark
+ // else if (partial >= 0xFFFe) ERROR;
+ else
+ outbuffer[outpos++] = partial;
+ count--;
+ partial_count = 0;
+ partial = 0;
+ }
+ else if (inpos >= inlength)
+ break;
+ else
+ {
+ int b = inbuffer[inpos++] & 0xFF;
+ partial = (char) (((int) partial << 8) + b);
+ partial_count++;
+ }
+ }
+ return origcount - count;
+ }
+}
diff --git a/libjava/gnu/gcj/convert/Input_UnicodeLittle.java b/libjava/gnu/gcj/convert/Input_UnicodeLittle.java
new file mode 100644
index 0000000..89d9c53
--- /dev/null
+++ b/libjava/gnu/gcj/convert/Input_UnicodeLittle.java
@@ -0,0 +1,49 @@
+/* Copyright (C) 2004 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package gnu.gcj.convert;
+
+public class Input_UnicodeLittle extends BytesToUnicode
+{
+ /** 0, 8, or 16 bits of a partially constructed character. */
+ char partial;
+ /** How many bytes of partial are valid. */
+ int partial_count;
+
+ public String getName() { return "UnicodeLittle"; }
+
+ public int read (char[] outbuffer, int outpos, int count)
+ {
+ int origcount = count;
+ for (;;)
+ {
+ if (partial_count == 2)
+ {
+ if (count == 0)
+ break;
+ if (partial == 0xFEFF)
+ ; // drop byte order mark
+ // else if (partial >= 0xFFFe) ERROR;
+ else
+ outbuffer[outpos++] = partial;
+ count--;
+ partial_count = 0;
+ partial = 0;
+ }
+ else if (inpos >= inlength)
+ break;
+ else
+ {
+ int b = inbuffer[inpos++] & 0xFF;
+ partial = (char) (partial | (b << (8 * partial_count)));
+ partial_count++;
+ }
+ }
+ return origcount - count;
+ }
+}