Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _LINUX_NLS_H
  2 #define _LINUX_NLS_H
  3 
  4 #include <linux/init.h>
  5 
  6 /* unicode character */
  7 typedef __u16 wchar_t;
  8 
  9 struct nls_table {
 10         char *charset;
 11         char *alias;
 12         int (*uni2char) (wchar_t uni, unsigned char *out, int boundlen);
 13         int (*char2uni) (const unsigned char *rawstring, int boundlen,
 14                          wchar_t *uni);
 15         unsigned char *charset2lower;
 16         unsigned char *charset2upper;
 17         struct module *owner;
 18         struct nls_table *next;
 19 };
 20 
 21 /* this value hold the maximum octet of charset */
 22 #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */
 23 
 24 /* nls.c */
 25 extern int register_nls(struct nls_table *);
 26 extern int unregister_nls(struct nls_table *);
 27 extern struct nls_table *load_nls(char *);
 28 extern void unload_nls(struct nls_table *);
 29 extern struct nls_table *load_nls_default(void);
 30 
 31 extern int utf8_mbtowc(wchar_t *, const __u8 *, int);
 32 extern int utf8_mbstowcs(wchar_t *, const __u8 *, int);
 33 extern int utf8_wctomb(__u8 *, wchar_t, int);
 34 extern int utf8_wcstombs(__u8 *, const wchar_t *, int);
 35 
 36 static inline unsigned char nls_tolower(struct nls_table *t, unsigned char c)
 37 {
 38         unsigned char nc = t->charset2lower[c];
 39 
 40         return nc ? nc : c;
 41 }
 42 
 43 static inline unsigned char nls_toupper(struct nls_table *t, unsigned char c)
 44 {
 45         unsigned char nc = t->charset2upper[c];
 46 
 47         return nc ? nc : c;
 48 }
 49 
 50 static inline int nls_strnicmp(struct nls_table *t, const unsigned char *s1,
 51                 const unsigned char *s2, int len)
 52 {
 53         while (len--) {
 54                 if (nls_tolower(t, *s1++) != nls_tolower(t, *s2++))
 55                         return 1;
 56         }
 57 
 58         return 0;
 59 }
 60 
 61 #define MODULE_ALIAS_NLS(name)  MODULE_ALIAS("nls_" __stringify(name))
 62 
 63 #endif /* _LINUX_NLS_H */
 64 
 65 
  This page was automatically generated by the LXR engine.