As I can see, there is no way to deal with files on msdos filesystem
with names containing non-latin-1 characters. Win95 long file names
(LFN) stored on this filesystem in UTF-16 encoding. Our current
msdosfs implementation converts them to UNIX names with ISO-8859-1
encoding and vice versa. If filename contains non-ISO-8859-1
characters, there is no way to open this file and this file even not
appears in directory listings. Also, ISO-8859-1 is not a very popular
encoding for UNIX-like desktops in our days. I wrote a quick fix for
this by changing LFN<->UNIX names conversion to UTF-16<->UTF-8 (UTF-16
surrogates, used by WinXP and later MS systems are supported). Diff
file attached.

There are still some things to do. DOS 8.3 names to UNIX names
conversion should be also adjusted (and probably we should write only
ASCII characters in DOS name like WinNT does, because short file names
in DOS/Windows stored in locale-specific encodings). We need to do
something when file with name with illegal UTF-8 sequences created
(may be return an error). We need a shared character set conversion
utilities between msdosfs and ntfs implementations. We need to use
case-insensitive names comparasion (but is not too easy with unicode).

May be my patch helps somebody. Any comments?

[demime 1.01d removed an attachment of type application/octet-stream which had 
a name of msdos.diff]

Reply via email to