📄 nls_utf8.c
字号:
/*
* Module for handling utf8 just like any other charset.
* By Urban Widmark 2000
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/nls.h>
#include <linux/errno.h>
static unsigned char identity[256];
static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
{
int n;
if ( (n = utf8_wctomb(out, uni, boundlen)) == -1) {
*out = '?';
return -EINVAL;
}
return n;
}
static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
{
int n;
if ( (n = utf8_mbtowc(uni, rawstring, boundlen)) == -1) {
*uni = 0x003f; /* ? */
n = -EINVAL;
}
return n;
}
static struct nls_table table = {
"utf8",
uni2char,
char2uni,
identity, /* no conversion */
identity,
THIS_MODULE,
};
static int __init init_nls_utf8(void)
{
int i;
for (i=0; i<256; i++)
identity[i] = (unsigned char) i;
return register_nls(&table);
}
static void __exit exit_nls_utf8(void)
{
unregister_nls(&table);
}
module_init(init_nls_utf8)
module_exit(exit_nls_utf8)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -