VFAT λȤ
----------------------------------------------------------------------
vfat ե륷ƥѤˤϡե륷ƥ 'vfat' 
ƤĤޤꡢ
  mount -t vfat /dev/fd0 /mnt

̤ʥѡƥΥեޥåɬפǤϤޤLinux ǥե
ޥåȤСmkdosfs ѤƤ


VFAT Υޥȥץ
----------------------------------------------------------------------
codepage=###  -- FAT  VFAT ǡû̾פѴʸ
                 ɥڡꤷޤͤϥɥڡ 437 
                 Ȥޤϡƹ񤪤ӥ衼åѤΰ
                 δͤǤ
                 [û̾Ȥϡ㤨 "Program Files" Ф
                 PROGRA~1 ȤäΤǤ]
iocharset=name -- 8 ӥåʸ 16 ӥå Unicode ʸȤѴѤ
                 ʸǤĹե̾ Unicode եޥå
                 ǥǥ˳ǼޤۤȤɤ Unix 
                 Unicode 򰷤ˡΤޤ󡣤 UTF8 Ѵ
                  utf8 ץ󤬤ޤ
utf8=<> -- UTF8 ϥե륷ƥǻȤäƤ Unicode Υ
                 󥳡ɷǡ󥽡Ѥޤ
                 [: UTF8  Unicode Transformation Format (UTF) 
                 ҤȤĤǡUCS-2  8 ӥåȷɽΤǤ
                 򴹤ӤŬƤޤ]
                 ΥץѤ뤳Ȥˤꡢե륷ƥ
                 ͭˤǤޤ'uni_xlate' åȤƤ硢
                 UTF8 ̵ˤʤޤ
uni_xlate=<> -- ʤ Unicode ʸ̤ʥץ
                 Ѵޤϡɤ Unicode ʸǺ
                 ե̾ǤХååפӥꥹȥǽȤ
                 ޤLinux  Unicode 򸽼¤˥ݡȤޤǤ
                 ǤΥץѤѴǤʤϡ'?'
                 Ѥޤvfat ե륷ƥ ':' ʳ
                 ȤʤΤǡ줬ʸ˻ѤƤ
                 ץ󥹤ϼΤȤǡu  Unicode
                 ʸ򼨤ޤ
			':', (u & 0x3f), ((u>>6) & 0x3f), (u>>12),
posix=<>  -- 'LongFileName'  'longfilename' Τ褦ʡ֤Ʊ
                 ʸʸΰ㤤Τ̾ζ¸ޤ
                 POSIX ե륷ƥȤθߴˤĤƤϡ8.3 
                 ̷Τ˰ʤΤǡԶ礬ޤ
nonumtail=<> -- 8.3 ̾硢ե̾ϡ
                 ̾ '~1' ( ~ θ 2, 3, ĤĤ) Ȥʤ
                 Υץ󤬥åȤƤơե̾
                 "longfilename.txt"  "longfile.txt" λ¸ߤ
                 ʤ硢û̾פ 'longfi~1.txt' 
                 'longfile.txt' Ȥʤޤ
quiet         --  warning åνϤߤޤ
check=s|r|n   -- ʸʸζ̤åꡣ
                 s: ̩ʸʸ̤ޤ
                 r: ¡ʸʸ̤ޤ
                 n: ̾͡ʸʸ̤ޤ

<>:0, 1, yes, no, true, false


٤
----------------------------------------------------------------------
* û̾硢ɥڡʸ礫 iocharset Ѵ
  ޤĹ̾ѴƤޤѴ뤿ˡ
  ϥɥڡˤäʸ礫 Unicode Ѵоݤʸ
  Ϥޤ

* raw scanning ƤʬơˡΥǥ쥯ȥꥨ
  Ѥ륢ץˤɬפޤ raw scanning Ȥ
  ƤΤϥǥ쥯ȥ̾ѹ륳ɤǤ

* 8.3 ζ֤ POSIX ե륷ƥΥݡȤư褦
  Ϥ˿ե̾ȸŤ̾δ̷֤⤬̾
  ̾ѹޤߤޤǤ


ͤԶ
----------------------------------------------------------------------
* vfat_valid_longname ͽ󤵤줿̾Ŭڤ˥åޤ
* ܥ塼̾ե륷ƥΥ롼ȥǥ쥯ȥΥǥ쥯ȥ̾
  Ʊ硢ǥ쥯ȥ̾϶ΥեȤɽޤ
* autoconv ץưޤ


Х
----------------------------------------------------------------------
VFAT ե륷ƥ꤬СХ
chaffee@bmrc.cs.berkeley.edu äƤˤʤäե̾
⤪


ƥȥ
----------------------------------------------------------------------
vfat ե륷ƥؤǤդνײ褹ʤ顢 vfat ǥ
ӥ塼󤫤ƥȥȤꤷƤ

  http://bmrc.berkeley.edu/people/chaffee/vfat.html

 vfat ե륷ƥΤʤʬƥȤޤޤ
ǽƥȤƤʤǽɲäΥƥȤϴޤޤ


VFAT ե륷ƥι¤
----------------------------------------------------------------------
(λ Galen C. Hunt <gchunt@cs.rochester.edu> 󶡤졢
Gordon Chaffee ˾ᤵޤ)

λ Windows NT 3.5  Windows 95 ǻѤĥ FAT ե
륷ƥˤĤƤλΤäƤ뵻ŪפȤƤñ˼ޤ
ΤʤΤΤǤݾڤޤ󤬡Τ褦˻פޤ

ĥ FAT ե륷ƥϡDOS С 6.223410239847 :-) ޤǤ
Ѥ FAT ե륷ƥȤۤȤƱǤפѹĹե
̾ɲäǤ̾ϡ 8.3 û̾Ф255
ʸޤǤĹȾʸ򥵥ݡȤޤ

 Windows 95 ե륷ƥˤ뽾 FAT ȥ򵭽Ҥ
ޤ

        struct directory { // Short 8.3 names 
                unsigned char name[8];          // file name 
                unsigned char ext[3];           // file extension 
                unsigned char attr;             // attribute byte 
                unsigned char lcase;		// Case for base and extension
                unsigned char ctime_ms;		// Creation time, milliseconds
                unsigned char ctime[2];		// Creation time
                unsigned char cdate[2];		// Creation date
                unsigned char adate[2];		// Last access date
                unsigned char reserved[2];	// reserved values (ignored) 
                unsigned char time[2];          // time stamp 
                unsigned char date[2];          // date stamp 
                unsigned char start[2];         // starting cluster number 
                unsigned char size[4];          // size of the file 
        };

lcase եɤϡ8.3 ̾Υ١/⤷ϳĥҤʸ
٤ޤΥեɤϡWindows 95 ǻѤ
褦ˤϸޤ󤬡Windows NT ϻѤޤե̾ʸ
ʸ Windows NT  Windows 95 ؤδʸߴϤޤ󡣤ޤ
θߴⴰǤϤޤ8.3  namespace ˹碌
Windows NT Ǿʸˤ񤫤줿ե̾ϡWindows 95 Ǥʸ
Ǹޤ

"start"  "size" ͤϼºݤˤϥȥ륨ǥͤǤ뤳
ȤդƤι¤ΤΥեɤεҤϸǡ¾Τ
Ǥ⸫Ĥޤ

ĥ FAT ƥǡMicrosoft ϡĥ줿̾ĥե
ʥǥ쥯ȥꥨȥޤ (Ť 8.3 ΥŬ礹
ɤ̤̾ʥȥϻäƤޤ)Ϥ̤ʥ
ȥ򥹥åȤȸƤӤޤŪˡåȤϥեγĥ줿̾
 13 ʸޤǤݻ̤˥եޥåȤ줿ǥ쥯ȥǤ
ȤϴϢեˤĤեΥǥ쥯ȥꥨȥ˴ؤղ
Ūʥ٥ȹͤƤMicrosoft ϥե̾Ȥ 8.3 
ȥ򡢥ե̾ȤƳĥ줿åȤΥǥ쥯ȥꥨȥ򻲾
뤳ȤǤޤ

åȤΥǥ쥯ȥꥨȥ˴ؤ C ¤Τ򼨤ޤ

        struct slot { // Up to 13 characters of a long name 
                unsigned char id;               // sequence number for slot 
                unsigned char name0_4[10];      // first 5 characters in name 
                unsigned char attr;             // attribute byte
                unsigned char reserved;         // always 0 
                unsigned char alias_checksum;   // checksum for 8.3 alias 
                unsigned char name5_10[12];     // 6 more characters in name
                unsigned char start[2];         // starting cluster number
                unsigned char name11_12[4];     // last 2 characters in name
        };

åȤ֤̯˸ΤϡŤեȥȤθߴݻ
 Microsoft ϤɽǤŤեȥѥ˥åʤ
ˡåȤʤФʤޤ󡣤Τμʤϡ

        1) åȤΥǥ쥯ȥꥨȥѤ°ХȤϡĤ 0x0f
           ꤵޤ "hidden", "system", "read-only",
           "volume label" °ĸŤǥ쥯ȥꥨȥ
           ޤۤȤɤθŤեȥ "volume label" ӥåȤ
           ꤵ줿ǥ쥯ȥꥨȥ̵뤷ޤºݤΥܥ塼
           ٥륨ȥ¾ 3 ӥåȤϥåȤޤ

        2) 饹Ƭ DOS եǤͭʤ 0 ˤĤꤵ
           ޤ

ĥ FAT ƥΥСؤθߴΤǡǥ쥯ȥꥨ
ȥ뤳ȤϸŤեȥǤǤޤʤϥåȤͭ
ݾڤʤФʤޤ󡣳ĥ FAT ƥϡ8.3 ǥ쥯ȥꥨ
ȥ°Ƥ뤳Ȥ򲼵Ǽºݤ˳ǧǤޤ

        1) ݥ˥󥰡եѤΥåȤϤĤ⤹ˡ
           б 8.3 ǥ쥯ȥꥨȥޤˡ
           åȤϡĥե̾ˤν֤ޡ id 
           äƤޤե "My Big File.Extension which is
           long" ˴ؤ 8.3 ǥ쥯ȥꥨȥꤪӤб
           Ĺ̾ΥåȤȤƤά˼ޤ

                <proceeding files...>
                <slot #3, id = 0x43, characters = "h is long">
                <slot #2, id = 0x02, characters = "xtension whic">
                <slot #1, id = 0x01, characters = "My Big File.E">
                <directory entry, name = "MYBIGFIL.EXT">

           åȤϺǸ夫ǽνǳǼ뤳ȤդƤ
           åȤ 1  N ֹդޤN ܤΥ
           ȤϺǸΤΤȤ 0x40 ¤ޤ

        2) åࡣƥåȤ "alias_checksum" ͤޤ
           åϼΥ르ꥺѤơ8.3 ̾
           ޤ

                for (sum = i = 0; i < 11; i++) {
                        sum = (((sum&1)<<7)|((sum&0xfe)>>1)) + name[i]
                }

        3) ǽΥåȤ˶ΰ褬硢Unicode  NULL(0x0000)
           Ǹʸθ˳ǼޤθˡǸΥå
           ̤ѤʸʬϤ٤ Unicode  0xFFFF ꤵ
           ޤ

Ǹˡĥ줿̾ Unicode ǳǼ뤳ȤդƤ
 Unicode ʸ 2 ХȤǤ
======================================================================
ܸܹ <hng@ps.ksky.ne.jp>
    濭 <takei@webmasters.gr.jp>
          Seiji Kaneko <skaneko@a2.mbn.or.jp>
          ƣ <gotom@debian.or.jp>
          ͺ <nakano@apm.seikei.ac.jp>
