freebsd-dev/sys/fs/msdosfs
R. Imura 697ab829fc [1] unix2doschr()
If a character cannot be converted to DOS code page,
 unix2doschr() returned `0'. As a result, unix2dosfn()
 was forced to return `0', so we saw a file which was
 composed of these characters as `Invalid argument'.
 To correct this, if a character can be converted to
 Unicode, unix2doschr() now returns `1' which is a magic
 number to make unix2dosfn() know that the character
 must be converted to `_'.

[2] unix2dosfn()
 The above-mentioned solution only works if a file
 has both of Unicode name and DOS code page name.
 Unicode name would not be recorded if file name
 can be settled within 11 bytes (DOS short name)
 and if no conversion from Unix charset to DOS code
 page has occurred. Thus, FreeBSD can create a file
 which has only short name, but there is no guarantee
 that the short name contains allways valid characters
 because we leave it to people by using mount_msdosfs(8)
 to select which conversion is used between DOS code
 page and unix charset.
 To avoid this, Unicode file name should be recorded
 unless a character is an ascii character. This is
 the way Windows XP do.

PR:		77074 [1]
MFC after:	1 week
2005-07-17 07:10:05 +00:00
..
bootsect.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:10:42 +00:00
bpb.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:10:42 +00:00
denode.h Give msdosfs a unique inode number which is really the byteoffset of 2005-04-07 07:55:37 +00:00
direntry.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:10:42 +00:00
fat.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:10:42 +00:00
msdosfs_conv.c [1] unix2doschr() 2005-07-17 07:10:05 +00:00
msdosfs_denode.c Give msdosfs a unique inode number which is really the byteoffset of 2005-04-07 07:55:37 +00:00
msdosfs_fat.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 18:10:42 +00:00
msdosfs_fileno.c By popular request, add a workaround that allows large (>128GB or so) 2004-07-03 13:22:38 +00:00
msdosfs_iconv.c - Support for multibyte charsets in LIBICONV. 2003-09-26 20:26:25 +00:00
msdosfs_lookup.c Disable negative name caching for msdosfs to work around a bug. 2005-04-16 23:47:19 +00:00
msdosfs_vfsops.c - Update vfs_root implementations to match the new prototype. None of 2005-03-24 07:36:16 +00:00
msdosfs_vnops.c Remove debug printout of major/minor numbers, print name instead. 2005-02-27 21:16:26 +00:00
msdosfsmount.h Eliminate cdev pointer in inodes, they're not used or needed. 2005-03-15 20:57:25 +00:00