aboutsummaryrefslogtreecommitdiff
path: root/iconvdata/sjis.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconvdata/sjis.c')
-rw-r--r--iconvdata/sjis.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/iconvdata/sjis.c b/iconvdata/sjis.c
index 60d1e28508..8d907b863c 100644
--- a/iconvdata/sjis.c
+++ b/iconvdata/sjis.c
@@ -1891,6 +1891,11 @@ static const uint16_t cjk_block4[2021] =
The only problem is that the shiftjis.txt file does not contain the
mapping for the characters 0x00 to 0x1f. We add them ourself.
+
+ A much bigger problem is that mapping of the tilde and the backslash
+ character. There are no such characters in SJIS. The proposed
+ handling is to simply map the two input values to the corresponding
+ byte values of ASCII. Things fall more or less in place this way.
*/
static const char from_ucs4_lat1[0xf8][2] =
{
@@ -1924,7 +1929,7 @@ static const char from_ucs4_lat1[0xf8][2] =
[0x0051] = "\x51\x00", [0x0052] = "\x52\x00", [0x0053] = "\x53\x00",
[0x0054] = "\x54\x00", [0x0055] = "\x55\x00", [0x0056] = "\x56\x00",
[0x0057] = "\x57\x00", [0x0058] = "\x58\x00", [0x0059] = "\x59\x00",
- [0x005a] = "\x5a\x00", [0x005b] = "\x5b\x00", [0x005c] = "\x81\x5c",
+ [0x005a] = "\x5a\x00", [0x005b] = "\x5b\x00", [0x005c] = "\x5c\x00",
[0x005d] = "\x5d\x00", [0x005e] = "\x5e\x00", [0x005f] = "\x5f\x00",
[0x0060] = "\x60\x00", [0x0061] = "\x61\x00", [0x0062] = "\x62\x00",
[0x0063] = "\x63\x00", [0x0064] = "\x64\x00", [0x0065] = "\x65\x00",
@@ -1936,7 +1941,7 @@ static const char from_ucs4_lat1[0xf8][2] =
[0x0075] = "\x75\x00", [0x0076] = "\x76\x00", [0x0077] = "\x77\x00",
[0x0078] = "\x78\x00", [0x0079] = "\x79\x00", [0x007a] = "\x7a\x00",
[0x007b] = "\x7b\x00", [0x007c] = "\x7c\x00", [0x007d] = "\x7d\x00",
- [0x007e] = "\x00\x00",
+ [0x007e] = "\x7e\x00",
[0x00a2] = "\x81\x91", [0x00a3] = "\x81\x92", [0x00a5] = "\x5c\x00",
[0x00a7] = "\x81\x98", [0x00a8] = "\x81\x4e", [0x00ac] = "\x81\xca",
[0x00b0] = "\x81\x8b", [0x00b1] = "\x81\x7d", [0x00b4] = "\x81\x4c",
@@ -4388,8 +4393,7 @@ static const char from_ucs4_extra[0x100][2] =
\
ch2 = inptr[1]; \
idx = ch * 256 + ch2; \
- if (__builtin_expect (ch < 0x81, 0) \
- || __builtin_expect (ch2 < 0x40, 0) \
+ if (__builtin_expect (ch2 < 0x40, 0) \
|| (__builtin_expect (idx, 0x8140) > 0x84be && idx < 0x889f) \
|| (__builtin_expect (idx, 0x8140) > 0x88fc && idx < 0x8940) \
|| (__builtin_expect (idx, 0x8140) > 0x9ffc && idx < 0xe040) \