diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-02 19:56:53 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-08-02 19:56:53 +0000 |
| commit | 65d0fdfa264aefe3cd73493b55afca39b87811be (patch) | |
| tree | 0c8d1667b236d225c6148e9a0990ef2a665f3fca /libjava/gnu | |
| parent | b191757f46ea30f632549b944c252fcccdc46ba5 (diff) | |
| download | ppe42-gcc-65d0fdfa264aefe3cd73493b55afca39b87811be.tar.gz ppe42-gcc-65d0fdfa264aefe3cd73493b55afca39b87811be.zip | |
* scripts/encodings.pl: New file.
* Makefile.in: Rebuilt.
* Makefile.am (convert_source_files): Added IOConverter.java.
* gnu/gcj/convert/UnicodeToBytes.java (UnicodeToBytes): Extend
IOConverter.
(getDefaultDecodingClass): Canonicalize default encoding name.
(getEncoder): Likewise.
* gnu/gcj/convert/BytesToUnicode.java (BytesToUnicode): Extend
IOConverter.
(getDefaultDecodingClass): Canonicalize default encoding name.
(getDecoder): Likewise.
* gnu/gcj/convert/IOConverter.java: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35432 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu')
| -rw-r--r-- | libjava/gnu/gcj/convert/BytesToUnicode.java | 8 | ||||
| -rw-r--r-- | libjava/gnu/gcj/convert/IOConverter.java | 52 | ||||
| -rw-r--r-- | libjava/gnu/gcj/convert/UnicodeToBytes.java | 8 |
3 files changed, 62 insertions, 6 deletions
diff --git a/libjava/gnu/gcj/convert/BytesToUnicode.java b/libjava/gnu/gcj/convert/BytesToUnicode.java index 92836e0e703..d80ed6570d8 100644 --- a/libjava/gnu/gcj/convert/BytesToUnicode.java +++ b/libjava/gnu/gcj/convert/BytesToUnicode.java @@ -8,7 +8,7 @@ details. */ package gnu.gcj.convert; -public abstract class BytesToUnicode +public abstract class BytesToUnicode extends IOConverter { /** Buffer to read bytes from. * The characters inbuffer[inpos] ... inbuffer[inlength-1] are available. */ @@ -25,7 +25,7 @@ public abstract class BytesToUnicode // Test (defaultDecodingClass == null) again in case of race condition. if (defaultDecodingClass == null) { - String encoding = System.getProperty("file.encoding"); + String encoding = canonicalize (System.getProperty("file.encoding")); String className = "gnu.gcj.convert.Input_"+encoding; try { @@ -60,7 +60,7 @@ public abstract class BytesToUnicode public static BytesToUnicode getDecoder (String encoding) throws java.io.UnsupportedEncodingException { - String className = "gnu.gcj.convert.Input_"+encoding; + String className = "gnu.gcj.convert.Input_" + canonicalize (encoding); Class decodingClass; try { @@ -71,6 +71,8 @@ public abstract class BytesToUnicode { try { + // We pass the original name to iconv and let it handle + // its own aliasing. return new Input_iconv (encoding); } catch (Throwable _) diff --git a/libjava/gnu/gcj/convert/IOConverter.java b/libjava/gnu/gcj/convert/IOConverter.java new file mode 100644 index 00000000000..c98662485b6 --- /dev/null +++ b/libjava/gnu/gcj/convert/IOConverter.java @@ -0,0 +1,52 @@ +/* Copyright (C) 2000 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. */ + +/* This is a base class that handles aliasing issues for + UnicodeToBytes to BytesToUnicode. */ + +package gnu.gcj.convert; + +import java.util.Hashtable; + +public abstract class IOConverter +{ + // Map encoding aliases to our canonical form. + static private Hashtable hash = new Hashtable (); + + static + { + // Manually maintained aliases. Note that the value must be our + // canonical name. + hash.put ("ISO-Latin-1", "8859_1"); + // All aliases after this point are automatically generated by the + // `encodings.pl' script. Run it to make any corrections. + hash.put ("ISO_8859-1:1987", "8859_1"); + hash.put ("iso-ir-100", "8859_1"); + hash.put ("ISO_8859-1", "8859_1"); + hash.put ("ISO-8859-1", "8859_1"); + hash.put ("latin1", "8859_1"); + hash.put ("l1", "8859_1"); + hash.put ("IBM819", "8859_1"); + hash.put ("CP819", "8859_1"); + hash.put ("csISOLatin1", "8859_1"); + hash.put ("UTF-8", "UTF8"); + hash.put ("Shift_JIS", "SJIS"); + hash.put ("MS_Kanji", "SJIS"); + hash.put ("csShiftJIS", "SJIS"); + hash.put ("Extended_UNIX_Code_Packed_Format_for_Japanese", "EUCJIS"); + hash.put ("csEUCPkdFmtJapanese", "EUCJIS"); + hash.put ("EUC-JP", "EUCJIS"); + } + + // Turn an alias into the canonical form. + protected static final String canonicalize (String name) + { + String c = (String) hash.get (name); + return c == null ? name : c; + } +} diff --git a/libjava/gnu/gcj/convert/UnicodeToBytes.java b/libjava/gnu/gcj/convert/UnicodeToBytes.java index d068fce5892..1ba6ddf8065 100644 --- a/libjava/gnu/gcj/convert/UnicodeToBytes.java +++ b/libjava/gnu/gcj/convert/UnicodeToBytes.java @@ -8,7 +8,7 @@ details. */ package gnu.gcj.convert; -public abstract class UnicodeToBytes +public abstract class UnicodeToBytes extends IOConverter { /** Buffer to emit bytes to. * The locations buf[count] ... buf[buf.length-1] are available. */ @@ -22,7 +22,7 @@ public abstract class UnicodeToBytes // Test (defaultEncodingClass == null) again in case of race condition. if (defaultEncodingClass == null) { - String encoding = System.getProperty("file.encoding"); + String encoding = canonicalize (System.getProperty("file.encoding")); String className = "gnu.gcj.convert.Output_"+encoding; try { @@ -58,7 +58,7 @@ public abstract class UnicodeToBytes public static UnicodeToBytes getEncoder (String encoding) throws java.io.UnsupportedEncodingException { - String className = "gnu.gcj.convert.Output_"+encoding; + String className = "gnu.gcj.convert.Output_" + canonicalize (encoding); Class encodingClass; try { @@ -69,6 +69,8 @@ public abstract class UnicodeToBytes { try { + // We pass the original name to iconv and let it handle + // its own aliasing. return new Output_iconv (encoding); } catch (Throwable _) |

