diff options
Diffstat (limited to 'ANDROID_3.4.5/fs/nls/nls_koi8-ru.c')
-rw-r--r-- | ANDROID_3.4.5/fs/nls/nls_koi8-ru.c | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/ANDROID_3.4.5/fs/nls/nls_koi8-ru.c b/ANDROID_3.4.5/fs/nls/nls_koi8-ru.c deleted file mode 100644 index e7bc1d75..00000000 --- a/ANDROID_3.4.5/fs/nls/nls_koi8-ru.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * linux/fs/nls/nls_koi8-ru.c - * - * Charset koi8-ru translation based on charset koi8-u. - * The Unicode to charset table has only exact mappings. - */ - -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/string.h> -#include <linux/nls.h> -#include <linux/errno.h> - -static struct nls_table *p_nls; - -static int uni2char(const wchar_t uni, - unsigned char *out, int boundlen) -{ - if (boundlen <= 0) - return -ENAMETOOLONG; - - if ((uni & 0xffaf) == 0x040e || (uni & 0xffce) == 0x254c) { - /* koi8-ru and koi8-u differ only on two characters */ - if (uni == 0x040e) - out[0] = 0xbe; - else if (uni == 0x045e) - out[0] = 0xae; - else if (uni == 0x255d || uni == 0x256c) - return 0; - else - return p_nls->uni2char(uni, out, boundlen); - return 1; - } - else - /* fast path */ - return p_nls->uni2char(uni, out, boundlen); -} - -static int char2uni(const unsigned char *rawstring, int boundlen, - wchar_t *uni) -{ - int n; - - if ((*rawstring & 0xef) != 0xae) { - /* koi8-ru and koi8-u differ only on two characters */ - *uni = (*rawstring & 0x10) ? 0x040e : 0x045e; - return 1; - } - - n = p_nls->char2uni(rawstring, boundlen, uni); - return n; -} - -static struct nls_table table = { - .charset = "koi8-ru", - .uni2char = uni2char, - .char2uni = char2uni, - .owner = THIS_MODULE, -}; - -static int __init init_nls_koi8_ru(void) -{ - p_nls = load_nls("koi8-u"); - - if (p_nls) { - table.charset2upper = p_nls->charset2upper; - table.charset2lower = p_nls->charset2lower; - return register_nls(&table); - } - - return -EINVAL; -} - -static void __exit exit_nls_koi8_ru(void) -{ - unregister_nls(&table); - unload_nls(p_nls); -} - -module_init(init_nls_koi8_ru) -module_exit(exit_nls_koi8_ru) - -MODULE_LICENSE("Dual BSD/GPL"); |