diff options
Diffstat (limited to 'iconvdata')
-rw-r--r-- | iconvdata/EUC-KR.irreversible | 1 | ||||
-rw-r--r-- | iconvdata/euc-kr.c | 28 | ||||
-rw-r--r-- | iconvdata/testdata/EUC-KR..UTF8 | 2 |
3 files changed, 18 insertions, 13 deletions
diff --git a/iconvdata/EUC-KR.irreversible b/iconvdata/EUC-KR.irreversible new file mode 100644 index 0000000..4eadbb3 --- /dev/null +++ b/iconvdata/EUC-KR.irreversible @@ -0,0 +1 @@ +0x5C 0x005C diff --git a/iconvdata/euc-kr.c b/iconvdata/euc-kr.c index 9ea937c..0b4e29a 100644 --- a/iconvdata/euc-kr.c +++ b/iconvdata/euc-kr.c @@ -29,7 +29,13 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp) { if (ch > 0x9f) { - if (__builtin_expect (ucs4_to_ksc5601 (ch, cp, 2), 0) + if (__builtin_expect (ch, 0) == 0x20a9) + { + /* Half-width Korean Currency WON sign. */ + cp[0] = '\\'; + cp[1] = '\0'; + } + else if (__builtin_expect (ucs4_to_ksc5601 (ch, cp, 2), 0) != __UNKNOWN_10646_CHAR) { cp[0] |= 0x80; @@ -38,9 +44,10 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp) else cp[0] = '\0'; } - /* XXX Think about 0x5c ; '\'. */ else { + /* There is no mapping for U005c but we nevertheless map it to + \x5c. */ cp[0] = (unsigned char) ch; cp[1] = '\0'; } @@ -67,17 +74,14 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp) { \ uint32_t ch = *inptr; \ \ - /* Half-width Korean Currency WON sign \ - \ - if (inchar == 0x5c) \ - ch = 0x20a9; \ - else if (inchar <= 0x7f) \ - ch = (uint32_t) inchar; \ - */ \ - \ if (ch <= 0x9f) \ - /* Plain ASCII. */ \ - ++inptr; \ + { \ + /* Plain ASCII with one exception. */ \ + if (ch == 0x5c) \ + /* Half-width Korean Currency WON sign. */ \ + ch = 0x20a9; \ + ++inptr; \ + } \ /* 0xfe(->0x7e : row 94) and 0xc9(->0x59 : row 41) are \ user-defined areas. */ \ else if (__builtin_expect (ch, 0xa1) == 0xa0 \ diff --git a/iconvdata/testdata/EUC-KR..UTF8 b/iconvdata/testdata/EUC-KR..UTF8 index e287e76..b6c484f 100644 --- a/iconvdata/testdata/EUC-KR..UTF8 +++ b/iconvdata/testdata/EUC-KR..UTF8 @@ -1,7 +1,7 @@ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O - P Q R S T U V W X Y Z [ \ ] ^ _ + P Q R S T U V W X Y Z [ ₩ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ |