Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
95a85e04
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
1 年多 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
95a85e04
编写于
7月 12, 2011
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
legacy japanese charset support in iconv (only from, not to)
上级
594b16e0
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
597 addition
and
0 deletion
+597
-0
src/locale/iconv.c
src/locale/iconv.c
+47
-0
src/locale/jis0208.h
src/locale/jis0208.h
+550
-0
未找到文件。
src/locale/iconv.c
浏览文件 @
95a85e04
...
...
@@ -15,6 +15,8 @@
#define US_ASCII 0306
#define WCHAR_T 0307
#define UTF_8 0310
#define EUC_JP 0320
#define SHIFT_JIS 0321
/* FIXME: these are not implemented yet
* EUC: A1-FE A1-FE
...
...
@@ -37,6 +39,8 @@ static const unsigned char charmaps[] =
"ucs4
\0
ucs4be
\0
utf32
\0
utf32be
\0\0\300
"
"ucs4le
\0
utf32le
\0\0\303
"
"ascii
\0
usascii
\0
iso646
\0
iso646us
\0\0\306
"
"eucjp
\0\0\320
"
"shiftjis
\0
sjis
\0\0\321
"
#include "codepages.h"
;
...
...
@@ -44,6 +48,10 @@ static const unsigned short legacy_chars[] = {
#include "legacychars.h"
};
static
const
unsigned
short
jis0208
[
84
][
94
]
=
{
#include "jis0208.h"
};
static
int
fuzzycmp
(
const
unsigned
char
*
a
,
const
unsigned
char
*
b
)
{
for
(;
*
a
&&
*
b
;
a
++
,
b
++
)
{
...
...
@@ -182,6 +190,45 @@ size_t iconv(iconv_t cd0, char **in, size_t *inb, char **out, size_t *outb)
c
=
((
c
-
0xd800
)
<<
10
)
|
(
d
-
0xdc00
);
}
break
;
case
SHIFT_JIS
:
if
(
c
-
0xa1
<=
0xdf
-
0xa1
)
{
c
+=
0xff61
-
0xa1
;
break
;
}
l
=
2
;
if
(
*
inb
<
2
)
goto
starved
;
d
=
*
((
unsigned
char
*
)
*
in
+
1
);
if
(
c
-
129
<=
159
-
129
)
c
-=
129
;
else
if
(
c
-
224
<=
239
-
224
)
c
-=
193
;
else
goto
ilseq
;
c
*=
2
;
if
(
d
-
64
<=
158
-
64
)
{
if
(
d
==
127
)
goto
ilseq
;
if
(
d
>
127
)
d
--
;
d
-=
64
;
}
else
if
(
d
-
159
<=
252
-
159
)
{
c
++
;
d
-=
159
;
}
c
=
jis0208
[
c
][
d
];
if
(
!
c
)
goto
ilseq
;
break
;
case
EUC_JP
:
l
=
2
;
if
(
*
inb
<
2
)
goto
starved
;
d
=
*
((
unsigned
char
*
)
*
in
+
1
);
if
(
c
==
0x8e
)
{
c
=
d
;
if
(
c
-
0xa1
>
0xdf
-
0xa1
)
goto
ilseq
;
c
+=
0xff61
-
0xa1
;
break
;
}
c
-=
0xa1
;
d
-=
0xa1
;
if
(
c
>=
84
||
d
>=
94
)
goto
ilseq
;
c
=
jis0208
[
c
][
d
];
if
(
!
c
)
goto
ilseq
;
break
;
default:
if
(
c
<
128
+
type
)
break
;
c
-=
128
+
type
;
...
...
src/locale/jis0208.h
0 → 100644
浏览文件 @
95a85e04
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录