cifs: add new case-insensitive conversion routines that are based on wchar_t's
authorJeff Layton <jlayton@redhat.com>
Thu, 5 Sep 2013 12:38:11 +0000 (08:38 -0400)
committerSteve French <smfrench@gmail.com>
Sun, 8 Sep 2013 19:38:05 +0000 (14:38 -0500)
commitc2ccf53dd0ddf0b48e68206c1abb99536851c7b2
tree3200c6fb4e36fb9ce5489939ee55fe09fcdb1ed2
parent4adf53a9e0d3d447c7ebf510fcd337fdee8350bd
cifs: add new case-insensitive conversion routines that are based on wchar_t's

The existing NLS case conversion routines do not appropriately handle
the (now common) case where the local host is using UTF8. This is
because nls_utf8 has no support at all for converting a utf8 string
between cases and the NLS infrastructure in general cannot handle
a multibyte input character.

In any case, what we really need for cifs is to emulate how we expect
the server to convert the character to upper or lowercase. Thus, even
if we had routines that could handle utf8 case conversion, we likely
would end up with the wrong result if the name ends up being in the
upper planes.

This patch adds a new scheme for doing unicode case conversion. The
case conversion tables that Microsoft has published for Windows 8
have been converted to a set of lookup tables, and a routine is
added to convert a wchar_t from lower to uppercase using those
tables.

Reported-and-Tested-by: Jan-Marek Glogowski <glogow@fbihome.de>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>
fs/cifs/Makefile
fs/cifs/cifs_unicode.h
fs/cifs/winucase.c [new file with mode: 0644]
This page took 0.02638 seconds and 5 git commands to generate.