cregit-Linux how code gets into the kernel

Release 4.10 fs/nls/nls_koi8-ru.c

Directory: fs/nls
/*
 * 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); }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds10587.50%150.00%
petr vandrovec*petr vandrovec*1512.50%150.00%
Total120100.00%2100.00%


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; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds69100.00%1100.00%
Total69100.00%1100.00%

static struct nls_table table = { .charset = "koi8-ru", .uni2char = uni2char, .char2uni = char2uni, };
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; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds49100.00%1100.00%
Total49100.00%1100.00%


static void __exit exit_nls_koi8_ru(void) { unregister_nls(&table); unload_nls(p_nls); }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds20100.00%1100.00%
Total20100.00%1100.00%

module_init(init_nls_koi8_ru) module_exit(exit_nls_koi8_ru) MODULE_LICENSE("Dual BSD/GPL");

Overall Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds29092.06%233.33%
petr vandrovec*petr vandrovec*154.76%116.67%
art haasart haas61.90%116.67%
dave jonesdave jones30.95%116.67%
uwe zeisbergeruwe zeisberger10.32%116.67%
Total315100.00%6100.00%
Directory: fs/nls
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.