summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--iconvdata/EUC-KR.irreversible1
-rw-r--r--iconvdata/euc-kr.c28
-rw-r--r--iconvdata/testdata/EUC-KR..UTF82
-rw-r--r--localedata/charmaps/EUC-KR2
-rw-r--r--localedata/locales/ko_KR4
6 files changed, 25 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index ec30782a0c..7ed6556ab0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2000-10-04  Ulrich Drepper  <drepper@redhat.com>
 
+	* iconvdata/euc-kr.c (euckr_from_ucs4): Handle U20a9.
+	(BODY from direction): Map \x5c to U20a9.
+	* iconvdata/testdata/EUC-KR..UTF8: Adjust to this change.
+	* iconvdata/EUC-KR.irreversible: New file.
+
 	* argp/argp-parse.c (argp_default_argp): Set libc as message domain.
 	(argp_version_argp): Likewise.
 
diff --git a/iconvdata/EUC-KR.irreversible b/iconvdata/EUC-KR.irreversible
new file mode 100644
index 0000000000..4eadbb376c
--- /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 9ea937c005..0b4e29abe3 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 e287e76c6f..b6c484fa11 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 { | } ~
 
diff --git a/localedata/charmaps/EUC-KR b/localedata/charmaps/EUC-KR
index bf18ea6106..6a4326790c 100644
--- a/localedata/charmaps/EUC-KR
+++ b/localedata/charmaps/EUC-KR
@@ -100,7 +100,7 @@ CHARMAP
 <U0059>     /x59         LATIN CAPITAL LETTER Y
 <U005A>     /x5a         LATIN CAPITAL LETTER Z
 <U005B>     /x5b         LEFT SQUARE BRACKET
-<U005C>     /x5c         REVERSE SOLIDUS
+<U20A9>     /x5c         WON SIGN
 <U005D>     /x5d         RIGHT SQUARE BRACKET
 <U005E>     /x5e         CIRCUMFLEX ACCENT
 <U005F>     /x5f         LOW LINE
diff --git a/localedata/locales/ko_KR b/localedata/locales/ko_KR
index cfeeadc1e7..1b9ec128ce 100644
--- a/localedata/locales/ko_KR
+++ b/localedata/locales/ko_KR
@@ -11120,9 +11120,7 @@ END LC_CTYPE
 LC_MONETARY
 
 int_curr_symbol		"<U004B><U0052><U0057><U0020>"
-% Should be U20A9 but this is not in EUC-KR.  Or is it?
-% currency_symbol		"<U20A9>"
-currency_symbol		"<UFFE6>"
+currency_symbol		"<U20A9>"
 mon_decimal_point	"<U002E>"
 mon_thousands_sep	"<U002C>"
 mon_grouping		3;3