Mac OS XでWindows禁止文字

NTFSにはファイル名禁止文字が沢山あるので、Mac OS XからWindowsにSMBで接続してファイル転送するとエラーになった。 が、最近同じことを試したら、なんと保存できる。FATのUSBメモリにも保存できる。いつの間に仕様変更したんだろう。 カーネルソースに詳細があります。
http://www.opensource.apple.com/source/xnu/xnu-1504.7.4/bsd/vfs/vfs_utfconv.c

/*
 * Invalid NTFS filename characters are encodeded using the
 * SFM (Services for Macintosh) private use Unicode characters.
 *
 * These should only be used for SMB, MSDOS or NTFS.
 *
 *    Illegal NTFS Char   SFM Unicode Char
 *  ----------------------------------------
 *    0x01-0x1f           0xf001-0xf01f
 *    '"'                 0xf020
 *    '*'                 0xf021
 *    '/'                 0xf022
 *    '<'                 0xf023
 *    '>'                 0xf024
 *    '?'                 0xf025
 *    '\'                 0xf026
 *    '|'                 0xf027
 *    ' '                 0xf028  (Only if last char of the name)
 *    '.'                 0xf029  (Only if last char of the name)
 *  ----------------------------------------
 *
 *  Reference: http://support.microsoft.com/kb/q117258/
 */

なんと、旧Service for Machintoshの仕様に倣い、Unicodeの私用領域を使って無理矢理保存するんだな。 当然のことながら、Windows側では正常に表示できません。 というか、SFMがそんな仕様になってたとは知らなかった。