This source file includes following definitions.
- isonum_711
- isonum_712
- isonum_721
- isonum_722
- isonum_723
- isonum_731
- isonum_732
- isonum_733
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #define ISODCL(from, to) (to - from + 1)
47
48 struct iso_volume_descriptor {
49 char type[ISODCL(1,1)];
50 char id[ISODCL(2,6)];
51 char version[ISODCL(7,7)];
52 char data[ISODCL(8,2048)];
53 };
54
55
56 #define ISO_VD_PRIMARY 1
57 #define ISO_VD_SUPPLEMENTARY 2
58 #define ISO_VD_END 255
59
60 #define ISO_STANDARD_ID "CD001"
61 #define ISO_ECMA_ID "CDW01"
62
63 struct iso_primary_descriptor {
64 char type [ISODCL ( 1, 1)];
65 char id [ISODCL ( 2, 6)];
66 char version [ISODCL ( 7, 7)];
67 char unused1 [ISODCL ( 8, 8)];
68 char system_id [ISODCL ( 9, 40)];
69 char volume_id [ISODCL ( 41, 72)];
70 char unused2 [ISODCL ( 73, 80)];
71 char volume_space_size [ISODCL ( 81, 88)];
72 char unused3 [ISODCL ( 89, 120)];
73 char volume_set_size [ISODCL (121, 124)];
74 char volume_sequence_number [ISODCL (125, 128)];
75 char logical_block_size [ISODCL (129, 132)];
76 char path_table_size [ISODCL (133, 140)];
77 char type_l_path_table [ISODCL (141, 144)];
78 char opt_type_l_path_table [ISODCL (145, 148)];
79 char type_m_path_table [ISODCL (149, 152)];
80 char opt_type_m_path_table [ISODCL (153, 156)];
81 char root_directory_record [ISODCL (157, 190)];
82 char volume_set_id [ISODCL (191, 318)];
83 char publisher_id [ISODCL (319, 446)];
84 char preparer_id [ISODCL (447, 574)];
85 char application_id [ISODCL (575, 702)];
86 char copyright_file_id [ISODCL (703, 739)];
87 char abstract_file_id [ISODCL (740, 776)];
88 char bibliographic_file_id [ISODCL (777, 813)];
89 char creation_date [ISODCL (814, 830)];
90 char modification_date [ISODCL (831, 847)];
91 char expiration_date [ISODCL (848, 864)];
92 char effective_date [ISODCL (865, 881)];
93 char file_structure_version [ISODCL (882, 882)];
94 char unused4 [ISODCL (883, 883)];
95 char application_data [ISODCL (884, 1395)];
96 char unused5 [ISODCL (1396, 2048)];
97 };
98 #define ISO_DEFAULT_BLOCK_SHIFT 11
99 #define ISO_DEFAULT_BLOCK_SIZE (1<<ISO_DEFAULT_BLOCK_SHIFT)
100
101
102
103
104
105
106 struct iso_supplementary_descriptor {
107 char type [ISODCL ( 1, 1)];
108 char id [ISODCL ( 2, 6)];
109 char version [ISODCL ( 7, 7)];
110 char flags [ISODCL ( 8, 8)];
111 char system_id [ISODCL ( 9, 40)];
112 char volume_id [ISODCL ( 41, 72)];
113 char unused2 [ISODCL ( 73, 80)];
114 char volume_space_size [ISODCL ( 81, 88)];
115 char escape [ISODCL ( 89, 120)];
116 char volume_set_size [ISODCL (121, 124)];
117 char volume_sequence_number [ISODCL (125, 128)];
118 char logical_block_size [ISODCL (129, 132)];
119 char path_table_size [ISODCL (133, 140)];
120 char type_l_path_table [ISODCL (141, 144)];
121 char opt_type_l_path_table [ISODCL (145, 148)];
122 char type_m_path_table [ISODCL (149, 152)];
123 char opt_type_m_path_table [ISODCL (153, 156)];
124 char root_directory_record [ISODCL (157, 190)];
125 char volume_set_id [ISODCL (191, 318)];
126 char publisher_id [ISODCL (319, 446)];
127 char preparer_id [ISODCL (447, 574)];
128 char application_id [ISODCL (575, 702)];
129 char copyright_file_id [ISODCL (703, 739)];
130 char abstract_file_id [ISODCL (740, 776)];
131 char bibliographic_file_id [ISODCL (777, 813)];
132 char creation_date [ISODCL (814, 830)];
133 char modification_date [ISODCL (831, 847)];
134 char expiration_date [ISODCL (848, 864)];
135 char effective_date [ISODCL (865, 881)];
136 char file_structure_version [ISODCL (882, 882)];
137 char unused4 [ISODCL (883, 883)];
138 char application_data [ISODCL (884, 1395)];
139 char unused5 [ISODCL (1396, 2048)];
140 };
141
142 struct iso_directory_record {
143 char length [ISODCL (1, 1)];
144 char ext_attr_length [ISODCL (2, 2)];
145 u_char extent [ISODCL (3, 10)];
146 u_char size [ISODCL (11, 18)];
147 char date [ISODCL (19, 25)];
148 char flags [ISODCL (26, 26)];
149 char file_unit_size [ISODCL (27, 27)];
150 char interleave [ISODCL (28, 28)];
151 char volume_sequence_number [ISODCL (29, 32)];
152 char name_len [ISODCL (33, 33)];
153 char name [1];
154 };
155
156
157 #define ISO_DIRECTORY_RECORD_SIZE 33
158
159 struct iso_extended_attributes {
160 u_char owner [ISODCL (1, 4)];
161 u_char group [ISODCL (5, 8)];
162 u_char perm [ISODCL (9, 10)];
163 char ctime [ISODCL (11, 27)];
164 char mtime [ISODCL (28, 44)];
165 char xtime [ISODCL (45, 61)];
166 char ftime [ISODCL (62, 78)];
167 char recfmt [ISODCL (79, 79)];
168 char recattr [ISODCL (80, 80)];
169 u_char reclen [ISODCL (81, 84)];
170 char system_id [ISODCL (85, 116)];
171 char system_use [ISODCL (117, 180)];
172 char version [ISODCL (181, 181)];
173 char len_esc [ISODCL (182, 182)];
174 char reserved [ISODCL (183, 246)];
175 u_char len_au [ISODCL (247, 250)];
176 };
177
178 static __inline int isonum_711(u_char *) __attribute__ ((__unused__));
179 static __inline int isonum_712(char *) __attribute__ ((__unused__));
180 static __inline int isonum_721(u_char *) __attribute__ ((__unused__));
181 static __inline int isonum_722(u_char *) __attribute__ ((__unused__));
182 static __inline int isonum_723(u_char *) __attribute__ ((__unused__));
183 static __inline int isonum_731(u_char *) __attribute__ ((__unused__));
184 static __inline int isonum_732(u_char *) __attribute__ ((__unused__));
185 static __inline int isonum_733(u_char *) __attribute__ ((__unused__));
186
187
188 static __inline int
189 isonum_711(u_char *p)
190 {
191 return *p;
192 }
193
194
195 static __inline int
196 isonum_712(char *p)
197 {
198 return *p;
199 }
200
201
202 static __inline int
203 isonum_721(p)
204 u_char *p;
205 {
206 #if !defined(__STRICT_ALIGNMENT) && (BYTE_ORDER == LITTLE_ENDIAN)
207 return *(u_int16_t *)p;
208 #else
209 return *p|((char)p[1] << 8);
210 #endif
211 }
212
213
214 static __inline int
215 isonum_722(p)
216 unsigned char *p;
217 {
218 #if !defined(__STRICT_ALIGNMENT) && (BYTE_ORDER == BIG_ENDIAN)
219 return *(u_int16_t *)p;
220 #else
221 return ((char)*p << 8)|p[1];
222 #endif
223 }
224
225
226 static __inline int
227 isonum_723(u_char *p)
228 {
229 #if !defined(__STRICT_ALIGNMENT) && \
230 ((BYTE_ORDER == LITTLE_ENDIAN) || (BYTE_ORDER == BIG_ENDIAN))
231 #if BYTE_ORDER == LITTLE_ENDIAN
232 return *(u_int16_t *)p;
233 #else
234 return *(u_int16_t *)(p + 2);
235 #endif
236 #else
237 return *p|(p[1] << 8);
238 #endif
239 }
240
241
242 static __inline int
243 isonum_731(p)
244 u_char *p;
245 {
246 #if !defined(__STRICT_ALIGNMENT) && (BYTE_ORDER == LITTLE_ENDIAN)
247 return *(u_int32_t *)p;
248 #else
249 return *p|(p[1] << 8)|(p[2] << 16)|(p[3] << 24);
250 #endif
251 }
252
253
254 static __inline int
255 isonum_732(p)
256 unsigned char *p;
257 {
258 #if !defined(__STRICT_ALIGNMENT) && (BYTE_ORDER == BIG_ENDIAN)
259 return *(u_int32_t *)p;
260 #else
261 return (*p << 24)|(p[1] << 16)|(p[2] << 8)|p[3];
262 #endif
263 }
264
265
266 static __inline int
267 isonum_733(u_char *p)
268 {
269 #if !defined(__STRICT_ALIGNMENT) && \
270 ((BYTE_ORDER == LITTLE_ENDIAN) || (BYTE_ORDER == BIG_ENDIAN))
271 #if BYTE_ORDER == LITTLE_ENDIAN
272 return *(u_int32_t *)p;
273 #else
274 return *(u_int32_t *)(p + 4);
275 #endif
276 #else
277 return *p|(p[1] << 8)|(p[2] << 16)|(p[3] << 24);
278 #endif
279 }
280
281
282
283
284 #define ASSOCCHAR '='