iso_fs.h
001: #ifndef _ISOFS_FS_H
002: #define _ISOFS_FS_H
003:
004: #include <linux/types.h>
005: #include <linux/magic.h>
006:
007:
008:
009:
010:
011:
012: #define ISODCL(from, to) (to - from + 1)
013:
014: struct iso_volume_descriptor {
015: char type[ISODCL(1,1)];
016: char id[ISODCL(2,6)];
017: char version[ISODCL(7,7)];
018: char data[ISODCL(8,2048)];
019: };
020:
021:
022: #define ISO_VD_PRIMARY 1
023: #define ISO_VD_SUPPLEMENTARY 2
024: #define ISO_VD_END 255
025:
026: #define ISO_STANDARD_ID "CD001"
027:
028: struct iso_primary_descriptor {
029: char type [ISODCL ( 1, 1)];
030: char id [ISODCL ( 2, 6)];
031: char version [ISODCL ( 7, 7)];
032: char unused1 [ISODCL ( 8, 8)];
033: char system_id [ISODCL ( 9, 40)];
034: char volume_id [ISODCL ( 41, 72)];
035: char unused2 [ISODCL ( 73, 80)];
036: char volume_space_size [ISODCL ( 81, 88)];
037: char unused3 [ISODCL ( 89, 120)];
038: char volume_set_size [ISODCL (121, 124)];
039: char volume_sequence_number [ISODCL (125, 128)];
040: char logical_block_size [ISODCL (129, 132)];
041: char path_table_size [ISODCL (133, 140)];
042: char type_l_path_table [ISODCL (141, 144)];
043: char opt_type_l_path_table [ISODCL (145, 148)];
044: char type_m_path_table [ISODCL (149, 152)];
045: char opt_type_m_path_table [ISODCL (153, 156)];
046: char root_directory_record [ISODCL (157, 190)];
047: char volume_set_id [ISODCL (191, 318)];
048: char publisher_id [ISODCL (319, 446)];
049: char preparer_id [ISODCL (447, 574)];
050: char application_id [ISODCL (575, 702)];
051: char copyright_file_id [ISODCL (703, 739)];
052: char abstract_file_id [ISODCL (740, 776)];
053: char bibliographic_file_id [ISODCL (777, 813)];
054: char creation_date [ISODCL (814, 830)];
055: char modification_date [ISODCL (831, 847)];
056: char expiration_date [ISODCL (848, 864)];
057: char effective_date [ISODCL (865, 881)];
058: char file_structure_version [ISODCL (882, 882)];
059: char unused4 [ISODCL (883, 883)];
060: char application_data [ISODCL (884, 1395)];
061: char unused5 [ISODCL (1396, 2048)];
062: };
063:
064:
065: struct iso_supplementary_descriptor {
066: char type [ISODCL ( 1, 1)];
067: char id [ISODCL ( 2, 6)];
068: char version [ISODCL ( 7, 7)];
069: char flags [ISODCL ( 8, 8)];
070: char system_id [ISODCL ( 9, 40)];
071: char volume_id [ISODCL ( 41, 72)];
072: char unused2 [ISODCL ( 73, 80)];
073: char volume_space_size [ISODCL ( 81, 88)];
074: char escape [ISODCL ( 89, 120)];
075: char volume_set_size [ISODCL (121, 124)];
076: char volume_sequence_number [ISODCL (125, 128)];
077: char logical_block_size [ISODCL (129, 132)];
078: char path_table_size [ISODCL (133, 140)];
079: char type_l_path_table [ISODCL (141, 144)];
080: char opt_type_l_path_table [ISODCL (145, 148)];
081: char type_m_path_table [ISODCL (149, 152)];
082: char opt_type_m_path_table [ISODCL (153, 156)];
083: char root_directory_record [ISODCL (157, 190)];
084: char volume_set_id [ISODCL (191, 318)];
085: char publisher_id [ISODCL (319, 446)];
086: char preparer_id [ISODCL (447, 574)];
087: char application_id [ISODCL (575, 702)];
088: char copyright_file_id [ISODCL (703, 739)];
089: char abstract_file_id [ISODCL (740, 776)];
090: char bibliographic_file_id [ISODCL (777, 813)];
091: char creation_date [ISODCL (814, 830)];
092: char modification_date [ISODCL (831, 847)];
093: char expiration_date [ISODCL (848, 864)];
094: char effective_date [ISODCL (865, 881)];
095: char file_structure_version [ISODCL (882, 882)];
096: char unused4 [ISODCL (883, 883)];
097: char application_data [ISODCL (884, 1395)];
098: char unused5 [ISODCL (1396, 2048)];
099: };
100:
101:
102: #define HS_STANDARD_ID "CDROM"
103:
104: struct hs_volume_descriptor {
105: char foo [ISODCL ( 1, 8)];
106: char type [ISODCL ( 9, 9)];
107: char id [ISODCL ( 10, 14)];
108: char version [ISODCL ( 15, 15)];
109: char data[ISODCL(16,2048)];
110: };
111:
112:
113: struct hs_primary_descriptor {
114: char foo [ISODCL ( 1, 8)];
115: char type [ISODCL ( 9, 9)];
116: char id [ISODCL ( 10, 14)];
117: char version [ISODCL ( 15, 15)];
118: char unused1 [ISODCL ( 16, 16)];
119: char system_id [ISODCL ( 17, 48)];
120: char volume_id [ISODCL ( 49, 80)];
121: char unused2 [ISODCL ( 81, 88)];
122: char volume_space_size [ISODCL ( 89, 96)];
123: char unused3 [ISODCL ( 97, 128)];
124: char volume_set_size [ISODCL (129, 132)];
125: char volume_sequence_number [ISODCL (133, 136)];
126: char logical_block_size [ISODCL (137, 140)];
127: char path_table_size [ISODCL (141, 148)];
128: char type_l_path_table [ISODCL (149, 152)];
129: char unused4 [ISODCL (153, 180)];
130: char root_directory_record [ISODCL (181, 214)];
131: };
132:
133:
134:
135: struct iso_path_table{
136: unsigned char name_len[2];
137: char extent[4];
138: char parent[2];
139: char name[0];
140: } __attribute__((packed));
141:
142:
143:
144:
145: struct iso_directory_record {
146: char length [ISODCL (1, 1)];
147: char ext_attr_length [ISODCL (2, 2)];
148: char extent [ISODCL (3, 10)];
149: char size [ISODCL (11, 18)];
150: char date [ISODCL (19, 25)];
151: char flags [ISODCL (26, 26)];
152: char file_unit_size [ISODCL (27, 27)];
153: char interleave [ISODCL (28, 28)];
154: char volume_sequence_number [ISODCL (29, 32)];
155: unsigned char name_len [ISODCL (33, 33)];
156: char name [0];
157: } __attribute__((packed));
158:
159: #define ISOFS_BLOCK_BITS 11
160: #define ISOFS_BLOCK_SIZE 2048
161:
162: #define ISOFS_BUFFER_SIZE(INODE) ((INODE)->i_sb->s_blocksize)
163: #define ISOFS_BUFFER_BITS(INODE) ((INODE)->i_sb->s_blocksize_bits)
164:
165: #endif
166:
© Andrew Scott 2006 -
2025,
All Rights Reserved