cregit-Linux how code gets into the kernel

Release 4.10 fs/nls/nls_utf8.c

Directory: fs/nls
/*
 * 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 (boundlen <= 0) return -ENAMETOOLONG; n = utf32_to_utf8(uni, out, boundlen); if (n < 0) { *out = '?'; return -EINVAL; } return n; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git4472.13%150.00%
alan sternalan stern1727.87%150.00%
Total61100.00%2100.00%


static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni) { int n; unicode_t u; n = utf8_to_utf32(rawstring, boundlen, &u); if (n < 0 || u > MAX_WCHAR_T) { *uni = 0x003f; /* ? */ return -EINVAL; } *uni = (wchar_t) u; return n; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git4361.43%150.00%
alan sternalan stern2738.57%150.00%
Total70100.00%2100.00%

static struct nls_table table = { .charset = "utf8", .uni2char = uni2char, .char2uni = char2uni, .charset2lower = identity, /* no conversion */ .charset2upper = identity, };
static int __init init_nls_utf8(void) { int i; for (i=0; i<256; i++) identity[i] = i; return register_nls(&table); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git39100.00%1100.00%
Total39100.00%1100.00%


static void __exit exit_nls_utf8(void) { unregister_nls(&table); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git15100.00%1100.00%
Total15100.00%1100.00%

module_init(init_nls_utf8) module_exit(exit_nls_utf8) MODULE_LICENSE("Dual BSD/GPL");

Overall Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git19174.90%120.00%
alan sternalan stern4417.25%120.00%
art haasart haas103.92%120.00%
linus torvaldslinus torvalds51.96%120.00%
dave jonesdave jones51.96%120.00%
Total255100.00%5100.00%
Directory: fs/nls
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.