2 * fat-handler - FAT12/16/32 filesystem handler
4 * Copyright © 2006 Marek Szyprowski
5 * Copyright © 2007-2015 The AROS Development Team
7 * This program is free software; you can redistribute it and/or modify it
8 * under the same terms as AROS itself.
13 #define FAT_MAX_SHORT_NAME 11
14 #define FAT_MAX_LONG_FILENAME 0xff
22 UBYTE bs_vollab
[FAT_MAX_SHORT_NAME
];
23 UBYTE bs_filsystype
[8];
25 __attribute__ ((__packed__
));
31 UWORD bpb_bytes_per_sect
;
32 UBYTE bpb_sect_per_clust
;
33 UWORD bpb_rsvd_sect_count
;
35 UWORD bpb_root_entries_count
;
36 UWORD bpb_total_sectors_16
;
38 UWORD bpb_fat_size_16
;
39 UWORD bpb_sect_per_track
;
41 ULONG bpb_hidden_sect
;
42 ULONG bpb_total_sectors_32
;
49 ULONG bpb_fat_size_32
;
52 ULONG bpb_root_cluster
;
54 UWORD bpb_back_bootsec
;
55 UBYTE bpb_reserved
[12];
58 __attribute__ ((__packed__
)) ebpb32
;
62 UBYTE bpb_signature
[2];
64 __attribute__ ((__packed__
));
76 __attribute__ ((__packed__
));
78 #define FSI_LEAD_SIG 0x41615252
79 #define FSI_STRUCT_SIG 0x61417272
80 #define FSI_TRAIL_SIG 0xaa550000
84 UBYTE name
[FAT_MAX_SHORT_NAME
];
87 UBYTE create_time_tenth
;
90 UWORD last_access_date
;
91 UWORD first_cluster_hi
;
94 UWORD first_cluster_lo
;
97 __attribute__ ((__packed__
));
99 #define ATTR_READ_ONLY 0x01
100 #define ATTR_HIDDEN 0x02
101 #define ATTR_SYSTEM 0x04
102 #define ATTR_VOLUME_ID 0x08
103 #define ATTR_DIRECTORY 0x10
104 #define ATTR_ARCHIVE 0x20
106 #define ATTR_LONG_NAME (ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID)
107 #define ATTR_LONG_NAME_MASK (ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY | ATTR_ARCHIVE)
108 #define ATTR_VOLUME_ID_MASK (ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID | ATTR_DIRECTORY)
110 struct FATLongDirEntry
118 UWORD first_cluster_lo
;
121 __attribute__ ((__packed__
));