• S
    Allow conversion of characters in Mac remap range. Part 1 · b693855f
    Steve French 提交于
    This allows directory listings to Mac to display filenames
    correctly which have been created with illegal (to Windows)
    characters in their filename. It does not allow
    converting the other direction yet ie opening files with
    these characters (followon patch).
    
    There are seven reserved characters that need to be remapped when
    mounting to Windows, Mac (or any server without Unix Extensions) which
    are valid in POSIX but not in the other OS.
    
    : \ < > ? * |
    
    We used the normal UCS-2 remap range for this in order to convert this
    to/from UTF8 as did Windows Services for Unix (basically add 0xF000 to
    any of the 7 reserved characters), at least when the "mapchars" mount
    option was specified.
    
    Mac used a very slightly different "Services for Mac" remap range
    0xF021 through 0xF027.  The attached patch allows cifs.ko (the kernel
    client) to read directories on macs containing files with these
    characters and display their names properly.  In theory this even
    might be useful on mounts to Samba when the vfs_catia or new
    "vfs_fruit" module is loaded.
    
    Currently the 7 reserved characters look very strange in directory
    listings from cifs.ko to Mac server.  This patch allows these file
    name characters to be read (requires specifying mapchars on mount).
    
    Two additional changes are needed:
    1) Make it more automatic: a way of detecting enough info so that
    we know to try to always remap these characters or not. Various
    have suggested that the SFM approach be made the default when
    the server does not support POSIX Unix extensions (cifs mounts
    to Samba for example) so need to make SFM remapping the default
    unless mapchars (SFU style mapping) specified on mount or no
    mapping explicitly requested or no mapping needed (cifs mounts to Samba).
    
    2) Adding a patch to map the characters the other direction
    (ie UTF-8 to UCS-2 on open).  This patch does it for translating
    readdir entries (ie UCS-2 to UTF-8)
    Signed-off-by: NSteve French <smfrench@gmail.com>
    Reviewed-by: NShirish Pargaonkar <shirishpargaonkar@gmail.com>
    b693855f
cifs_unicode.h 10.1 KB