diff options
Diffstat (limited to 'fs/udf/ecma_167.h')
-rw-r--r-- | fs/udf/ecma_167.h | 684 |
1 files changed, 342 insertions, 342 deletions
diff --git a/fs/udf/ecma_167.h b/fs/udf/ecma_167.h index 294ce2daa03a..56387711589b 100644 --- a/fs/udf/ecma_167.h +++ b/fs/udf/ecma_167.h | |||
@@ -39,8 +39,8 @@ | |||
39 | 39 | ||
40 | /* Character set specification (ECMA 167r3 1/7.2.1) */ | 40 | /* Character set specification (ECMA 167r3 1/7.2.1) */ |
41 | typedef struct { | 41 | typedef struct { |
42 | uint8_t charSetType; | 42 | uint8_t charSetType; |
43 | uint8_t charSetInfo[63]; | 43 | uint8_t charSetInfo[63]; |
44 | } __attribute__ ((packed)) charspec; | 44 | } __attribute__ ((packed)) charspec; |
45 | 45 | ||
46 | /* Character Set Type (ECMA 167r3 1/7.2.1.1) */ | 46 | /* Character Set Type (ECMA 167r3 1/7.2.1.1) */ |
@@ -54,33 +54,33 @@ typedef struct { | |||
54 | #define CHARSPEC_TYPE_CS7 0x07 /* (1/7.2.9) */ | 54 | #define CHARSPEC_TYPE_CS7 0x07 /* (1/7.2.9) */ |
55 | #define CHARSPEC_TYPE_CS8 0x08 /* (1/7.2.10) */ | 55 | #define CHARSPEC_TYPE_CS8 0x08 /* (1/7.2.10) */ |
56 | 56 | ||
57 | typedef uint8_t dstring; | 57 | typedef uint8_t dstring; |
58 | 58 | ||
59 | /* Timestamp (ECMA 167r3 1/7.3) */ | 59 | /* Timestamp (ECMA 167r3 1/7.3) */ |
60 | typedef struct { | 60 | typedef struct { |
61 | __le16 typeAndTimezone; | 61 | __le16 typeAndTimezone; |
62 | __le16 year; | 62 | __le16 year; |
63 | uint8_t month; | 63 | uint8_t month; |
64 | uint8_t day; | 64 | uint8_t day; |
65 | uint8_t hour; | 65 | uint8_t hour; |
66 | uint8_t minute; | 66 | uint8_t minute; |
67 | uint8_t second; | 67 | uint8_t second; |
68 | uint8_t centiseconds; | 68 | uint8_t centiseconds; |
69 | uint8_t hundredsOfMicroseconds; | 69 | uint8_t hundredsOfMicroseconds; |
70 | uint8_t microseconds; | 70 | uint8_t microseconds; |
71 | } __attribute__ ((packed)) timestamp; | 71 | } __attribute__ ((packed)) timestamp; |
72 | 72 | ||
73 | typedef struct { | 73 | typedef struct { |
74 | uint16_t typeAndTimezone; | 74 | uint16_t typeAndTimezone; |
75 | int16_t year; | 75 | int16_t year; |
76 | uint8_t month; | 76 | uint8_t month; |
77 | uint8_t day; | 77 | uint8_t day; |
78 | uint8_t hour; | 78 | uint8_t hour; |
79 | uint8_t minute; | 79 | uint8_t minute; |
80 | uint8_t second; | 80 | uint8_t second; |
81 | uint8_t centiseconds; | 81 | uint8_t centiseconds; |
82 | uint8_t hundredsOfMicroseconds; | 82 | uint8_t hundredsOfMicroseconds; |
83 | uint8_t microseconds; | 83 | uint8_t microseconds; |
84 | } __attribute__ ((packed)) kernel_timestamp; | 84 | } __attribute__ ((packed)) kernel_timestamp; |
85 | 85 | ||
86 | /* Type and Time Zone (ECMA 167r3 1/7.3.1) */ | 86 | /* Type and Time Zone (ECMA 167r3 1/7.3.1) */ |
@@ -92,9 +92,9 @@ typedef struct { | |||
92 | 92 | ||
93 | /* Entity identifier (ECMA 167r3 1/7.4) */ | 93 | /* Entity identifier (ECMA 167r3 1/7.4) */ |
94 | typedef struct { | 94 | typedef struct { |
95 | uint8_t flags; | 95 | uint8_t flags; |
96 | uint8_t ident[23]; | 96 | uint8_t ident[23]; |
97 | uint8_t identSuffix[8]; | 97 | uint8_t identSuffix[8]; |
98 | } __attribute__ ((packed)) regid; | 98 | } __attribute__ ((packed)) regid; |
99 | 99 | ||
100 | /* Flags (ECMA 167r3 1/7.4.1) */ | 100 | /* Flags (ECMA 167r3 1/7.4.1) */ |
@@ -104,10 +104,10 @@ typedef struct { | |||
104 | /* Volume Structure Descriptor (ECMA 167r3 2/9.1) */ | 104 | /* Volume Structure Descriptor (ECMA 167r3 2/9.1) */ |
105 | #define VSD_STD_ID_LEN 5 | 105 | #define VSD_STD_ID_LEN 5 |
106 | struct volStructDesc { | 106 | struct volStructDesc { |
107 | uint8_t structType; | 107 | uint8_t structType; |
108 | uint8_t stdIdent[VSD_STD_ID_LEN]; | 108 | uint8_t stdIdent[VSD_STD_ID_LEN]; |
109 | uint8_t structVersion; | 109 | uint8_t structVersion; |
110 | uint8_t structData[2041]; | 110 | uint8_t structData[2041]; |
111 | } __attribute__ ((packed)); | 111 | } __attribute__ ((packed)); |
112 | 112 | ||
113 | /* Standard Identifier (EMCA 167r2 2/9.1.2) */ | 113 | /* Standard Identifier (EMCA 167r2 2/9.1.2) */ |
@@ -123,36 +123,36 @@ struct volStructDesc { | |||
123 | 123 | ||
124 | /* Beginning Extended Area Descriptor (ECMA 167r3 2/9.2) */ | 124 | /* Beginning Extended Area Descriptor (ECMA 167r3 2/9.2) */ |
125 | struct beginningExtendedAreaDesc { | 125 | struct beginningExtendedAreaDesc { |
126 | uint8_t structType; | 126 | uint8_t structType; |
127 | uint8_t stdIdent[VSD_STD_ID_LEN]; | 127 | uint8_t stdIdent[VSD_STD_ID_LEN]; |
128 | uint8_t structVersion; | 128 | uint8_t structVersion; |
129 | uint8_t structData[2041]; | 129 | uint8_t structData[2041]; |
130 | } __attribute__ ((packed)); | 130 | } __attribute__ ((packed)); |
131 | 131 | ||
132 | /* Terminating Extended Area Descriptor (ECMA 167r3 2/9.3) */ | 132 | /* Terminating Extended Area Descriptor (ECMA 167r3 2/9.3) */ |
133 | struct terminatingExtendedAreaDesc { | 133 | struct terminatingExtendedAreaDesc { |
134 | uint8_t structType; | 134 | uint8_t structType; |
135 | uint8_t stdIdent[VSD_STD_ID_LEN]; | 135 | uint8_t stdIdent[VSD_STD_ID_LEN]; |
136 | uint8_t structVersion; | 136 | uint8_t structVersion; |
137 | uint8_t structData[2041]; | 137 | uint8_t structData[2041]; |
138 | } __attribute__ ((packed)); | 138 | } __attribute__ ((packed)); |
139 | 139 | ||
140 | /* Boot Descriptor (ECMA 167r3 2/9.4) */ | 140 | /* Boot Descriptor (ECMA 167r3 2/9.4) */ |
141 | struct bootDesc { | 141 | struct bootDesc { |
142 | uint8_t structType; | 142 | uint8_t structType; |
143 | uint8_t stdIdent[VSD_STD_ID_LEN]; | 143 | uint8_t stdIdent[VSD_STD_ID_LEN]; |
144 | uint8_t structVersion; | 144 | uint8_t structVersion; |
145 | uint8_t reserved1; | 145 | uint8_t reserved1; |
146 | regid archType; | 146 | regid archType; |
147 | regid bootIdent; | 147 | regid bootIdent; |
148 | __le32 bootExtLocation; | 148 | __le32 bootExtLocation; |
149 | __le32 bootExtLength; | 149 | __le32 bootExtLength; |
150 | __le64 loadAddress; | 150 | __le64 loadAddress; |
151 | __le64 startAddress; | 151 | __le64 startAddress; |
152 | timestamp descCreationDateAndTime; | 152 | timestamp descCreationDateAndTime; |
153 | __le16 flags; | 153 | __le16 flags; |
154 | uint8_t reserved2[32]; | 154 | uint8_t reserved2[32]; |
155 | uint8_t bootUse[1906]; | 155 | uint8_t bootUse[1906]; |
156 | } __attribute__ ((packed)); | 156 | } __attribute__ ((packed)); |
157 | 157 | ||
158 | /* Flags (ECMA 167r3 2/9.4.12) */ | 158 | /* Flags (ECMA 167r3 2/9.4.12) */ |
@@ -160,25 +160,25 @@ struct bootDesc { | |||
160 | 160 | ||
161 | /* Extent Descriptor (ECMA 167r3 3/7.1) */ | 161 | /* Extent Descriptor (ECMA 167r3 3/7.1) */ |
162 | typedef struct { | 162 | typedef struct { |
163 | __le32 extLength; | 163 | __le32 extLength; |
164 | __le32 extLocation; | 164 | __le32 extLocation; |
165 | } __attribute__ ((packed)) extent_ad; | 165 | } __attribute__ ((packed)) extent_ad; |
166 | 166 | ||
167 | typedef struct { | 167 | typedef struct { |
168 | uint32_t extLength; | 168 | uint32_t extLength; |
169 | uint32_t extLocation; | 169 | uint32_t extLocation; |
170 | } kernel_extent_ad; | 170 | } kernel_extent_ad; |
171 | 171 | ||
172 | /* Descriptor Tag (ECMA 167r3 3/7.2) */ | 172 | /* Descriptor Tag (ECMA 167r3 3/7.2) */ |
173 | typedef struct { | 173 | typedef struct { |
174 | __le16 tagIdent; | 174 | __le16 tagIdent; |
175 | __le16 descVersion; | 175 | __le16 descVersion; |
176 | uint8_t tagChecksum; | 176 | uint8_t tagChecksum; |
177 | uint8_t reserved; | 177 | uint8_t reserved; |
178 | __le16 tagSerialNum; | 178 | __le16 tagSerialNum; |
179 | __le16 descCRC; | 179 | __le16 descCRC; |
180 | __le16 descCRCLength; | 180 | __le16 descCRCLength; |
181 | __le32 tagLocation; | 181 | __le32 tagLocation; |
182 | } __attribute__ ((packed)) tag; | 182 | } __attribute__ ((packed)) tag; |
183 | 183 | ||
184 | /* Tag Identifier (ECMA 167r3 3/7.2.1) */ | 184 | /* Tag Identifier (ECMA 167r3 3/7.2.1) */ |
@@ -194,37 +194,37 @@ typedef struct { | |||
194 | 194 | ||
195 | /* NSR Descriptor (ECMA 167r3 3/9.1) */ | 195 | /* NSR Descriptor (ECMA 167r3 3/9.1) */ |
196 | struct NSRDesc { | 196 | struct NSRDesc { |
197 | uint8_t structType; | 197 | uint8_t structType; |
198 | uint8_t stdIdent[VSD_STD_ID_LEN]; | 198 | uint8_t stdIdent[VSD_STD_ID_LEN]; |
199 | uint8_t structVersion; | 199 | uint8_t structVersion; |
200 | uint8_t reserved; | 200 | uint8_t reserved; |
201 | uint8_t structData[2040]; | 201 | uint8_t structData[2040]; |
202 | } __attribute__ ((packed)); | 202 | } __attribute__ ((packed)); |
203 | 203 | ||
204 | /* Primary Volume Descriptor (ECMA 167r3 3/10.1) */ | 204 | /* Primary Volume Descriptor (ECMA 167r3 3/10.1) */ |
205 | struct primaryVolDesc { | 205 | struct primaryVolDesc { |
206 | tag descTag; | 206 | tag descTag; |
207 | __le32 volDescSeqNum; | 207 | __le32 volDescSeqNum; |
208 | __le32 primaryVolDescNum; | 208 | __le32 primaryVolDescNum; |
209 | dstring volIdent[32]; | 209 | dstring volIdent[32]; |
210 | __le16 volSeqNum; | 210 | __le16 volSeqNum; |
211 | __le16 maxVolSeqNum; | 211 | __le16 maxVolSeqNum; |
212 | __le16 interchangeLvl; | 212 | __le16 interchangeLvl; |
213 | __le16 maxInterchangeLvl; | 213 | __le16 maxInterchangeLvl; |
214 | __le32 charSetList; | 214 | __le32 charSetList; |
215 | __le32 maxCharSetList; | 215 | __le32 maxCharSetList; |
216 | dstring volSetIdent[128]; | 216 | dstring volSetIdent[128]; |
217 | charspec descCharSet; | 217 | charspec descCharSet; |
218 | charspec explanatoryCharSet; | 218 | charspec explanatoryCharSet; |
219 | extent_ad volAbstract; | 219 | extent_ad volAbstract; |
220 | extent_ad volCopyright; | 220 | extent_ad volCopyright; |
221 | regid appIdent; | 221 | regid appIdent; |
222 | timestamp recordingDateAndTime; | 222 | timestamp recordingDateAndTime; |
223 | regid impIdent; | 223 | regid impIdent; |
224 | uint8_t impUse[64]; | 224 | uint8_t impUse[64]; |
225 | __le32 predecessorVolDescSeqLocation; | 225 | __le32 predecessorVolDescSeqLocation; |
226 | __le16 flags; | 226 | __le16 flags; |
227 | uint8_t reserved[22]; | 227 | uint8_t reserved[22]; |
228 | } __attribute__ ((packed)); | 228 | } __attribute__ ((packed)); |
229 | 229 | ||
230 | /* Flags (ECMA 167r3 3/10.1.21) */ | 230 | /* Flags (ECMA 167r3 3/10.1.21) */ |
@@ -232,26 +232,26 @@ struct primaryVolDesc { | |||
232 | 232 | ||
233 | /* Anchor Volume Descriptor Pointer (ECMA 167r3 3/10.2) */ | 233 | /* Anchor Volume Descriptor Pointer (ECMA 167r3 3/10.2) */ |
234 | struct anchorVolDescPtr { | 234 | struct anchorVolDescPtr { |
235 | tag descTag; | 235 | tag descTag; |
236 | extent_ad mainVolDescSeqExt; | 236 | extent_ad mainVolDescSeqExt; |
237 | extent_ad reserveVolDescSeqExt; | 237 | extent_ad reserveVolDescSeqExt; |
238 | uint8_t reserved[480]; | 238 | uint8_t reserved[480]; |
239 | } __attribute__ ((packed)); | 239 | } __attribute__ ((packed)); |
240 | 240 | ||
241 | /* Volume Descriptor Pointer (ECMA 167r3 3/10.3) */ | 241 | /* Volume Descriptor Pointer (ECMA 167r3 3/10.3) */ |
242 | struct volDescPtr { | 242 | struct volDescPtr { |
243 | tag descTag; | 243 | tag descTag; |
244 | __le32 volDescSeqNum; | 244 | __le32 volDescSeqNum; |
245 | extent_ad nextVolDescSeqExt; | 245 | extent_ad nextVolDescSeqExt; |
246 | uint8_t reserved[484]; | 246 | uint8_t reserved[484]; |
247 | } __attribute__ ((packed)); | 247 | } __attribute__ ((packed)); |
248 | 248 | ||
249 | /* Implementation Use Volume Descriptor (ECMA 167r3 3/10.4) */ | 249 | /* Implementation Use Volume Descriptor (ECMA 167r3 3/10.4) */ |
250 | struct impUseVolDesc { | 250 | struct impUseVolDesc { |
251 | tag descTag; | 251 | tag descTag; |
252 | __le32 volDescSeqNum; | 252 | __le32 volDescSeqNum; |
253 | regid impIdent; | 253 | regid impIdent; |
254 | uint8_t impUse[460]; | 254 | uint8_t impUse[460]; |
255 | } __attribute__ ((packed)); | 255 | } __attribute__ ((packed)); |
256 | 256 | ||
257 | /* Partition Descriptor (ECMA 167r3 3/10.5) */ | 257 | /* Partition Descriptor (ECMA 167r3 3/10.5) */ |
@@ -291,26 +291,26 @@ struct partitionDesc { | |||
291 | 291 | ||
292 | /* Logical Volume Descriptor (ECMA 167r3 3/10.6) */ | 292 | /* Logical Volume Descriptor (ECMA 167r3 3/10.6) */ |
293 | struct logicalVolDesc { | 293 | struct logicalVolDesc { |
294 | tag descTag; | 294 | tag descTag; |
295 | __le32 volDescSeqNum; | 295 | __le32 volDescSeqNum; |
296 | charspec descCharSet; | 296 | charspec descCharSet; |
297 | dstring logicalVolIdent[128]; | 297 | dstring logicalVolIdent[128]; |
298 | __le32 logicalBlockSize; | 298 | __le32 logicalBlockSize; |
299 | regid domainIdent; | 299 | regid domainIdent; |
300 | uint8_t logicalVolContentsUse[16]; | 300 | uint8_t logicalVolContentsUse[16]; |
301 | __le32 mapTableLength; | 301 | __le32 mapTableLength; |
302 | __le32 numPartitionMaps; | 302 | __le32 numPartitionMaps; |
303 | regid impIdent; | 303 | regid impIdent; |
304 | uint8_t impUse[128]; | 304 | uint8_t impUse[128]; |
305 | extent_ad integritySeqExt; | 305 | extent_ad integritySeqExt; |
306 | uint8_t partitionMaps[0]; | 306 | uint8_t partitionMaps[0]; |
307 | } __attribute__ ((packed)); | 307 | } __attribute__ ((packed)); |
308 | 308 | ||
309 | /* Generic Partition Map (ECMA 167r3 3/10.7.1) */ | 309 | /* Generic Partition Map (ECMA 167r3 3/10.7.1) */ |
310 | struct genericPartitionMap { | 310 | struct genericPartitionMap { |
311 | uint8_t partitionMapType; | 311 | uint8_t partitionMapType; |
312 | uint8_t partitionMapLength; | 312 | uint8_t partitionMapLength; |
313 | uint8_t partitionMapping[0]; | 313 | uint8_t partitionMapping[0]; |
314 | } __attribute__ ((packed)); | 314 | } __attribute__ ((packed)); |
315 | 315 | ||
316 | /* Partition Map Type (ECMA 167r3 3/10.7.1.1) */ | 316 | /* Partition Map Type (ECMA 167r3 3/10.7.1.1) */ |
@@ -320,45 +320,45 @@ struct genericPartitionMap { | |||
320 | 320 | ||
321 | /* Type 1 Partition Map (ECMA 167r3 3/10.7.2) */ | 321 | /* Type 1 Partition Map (ECMA 167r3 3/10.7.2) */ |
322 | struct genericPartitionMap1 { | 322 | struct genericPartitionMap1 { |
323 | uint8_t partitionMapType; | 323 | uint8_t partitionMapType; |
324 | uint8_t partitionMapLength; | 324 | uint8_t partitionMapLength; |
325 | __le16 volSeqNum; | 325 | __le16 volSeqNum; |
326 | __le16 partitionNum; | 326 | __le16 partitionNum; |
327 | } __attribute__ ((packed)); | 327 | } __attribute__ ((packed)); |
328 | 328 | ||
329 | /* Type 2 Partition Map (ECMA 167r3 3/10.7.3) */ | 329 | /* Type 2 Partition Map (ECMA 167r3 3/10.7.3) */ |
330 | struct genericPartitionMap2 { | 330 | struct genericPartitionMap2 { |
331 | uint8_t partitionMapType; | 331 | uint8_t partitionMapType; |
332 | uint8_t partitionMapLength; | 332 | uint8_t partitionMapLength; |
333 | uint8_t partitionIdent[62]; | 333 | uint8_t partitionIdent[62]; |
334 | } __attribute__ ((packed)); | 334 | } __attribute__ ((packed)); |
335 | 335 | ||
336 | /* Unallocated Space Descriptor (ECMA 167r3 3/10.8) */ | 336 | /* Unallocated Space Descriptor (ECMA 167r3 3/10.8) */ |
337 | struct unallocSpaceDesc { | 337 | struct unallocSpaceDesc { |
338 | tag descTag; | 338 | tag descTag; |
339 | __le32 volDescSeqNum; | 339 | __le32 volDescSeqNum; |
340 | __le32 numAllocDescs; | 340 | __le32 numAllocDescs; |
341 | extent_ad allocDescs[0]; | 341 | extent_ad allocDescs[0]; |
342 | } __attribute__ ((packed)); | 342 | } __attribute__ ((packed)); |
343 | 343 | ||
344 | /* Terminating Descriptor (ECMA 167r3 3/10.9) */ | 344 | /* Terminating Descriptor (ECMA 167r3 3/10.9) */ |
345 | struct terminatingDesc { | 345 | struct terminatingDesc { |
346 | tag descTag; | 346 | tag descTag; |
347 | uint8_t reserved[496]; | 347 | uint8_t reserved[496]; |
348 | } __attribute__ ((packed)); | 348 | } __attribute__ ((packed)); |
349 | 349 | ||
350 | /* Logical Volume Integrity Descriptor (ECMA 167r3 3/10.10) */ | 350 | /* Logical Volume Integrity Descriptor (ECMA 167r3 3/10.10) */ |
351 | struct logicalVolIntegrityDesc { | 351 | struct logicalVolIntegrityDesc { |
352 | tag descTag; | 352 | tag descTag; |
353 | timestamp recordingDateAndTime; | 353 | timestamp recordingDateAndTime; |
354 | __le32 integrityType; | 354 | __le32 integrityType; |
355 | extent_ad nextIntegrityExt; | 355 | extent_ad nextIntegrityExt; |
356 | uint8_t logicalVolContentsUse[32]; | 356 | uint8_t logicalVolContentsUse[32]; |
357 | __le32 numOfPartitions; | 357 | __le32 numOfPartitions; |
358 | __le32 lengthOfImpUse; | 358 | __le32 lengthOfImpUse; |
359 | __le32 freeSpaceTable[0]; | 359 | __le32 freeSpaceTable[0]; |
360 | __le32 sizeTable[0]; | 360 | __le32 sizeTable[0]; |
361 | uint8_t impUse[0]; | 361 | uint8_t impUse[0]; |
362 | } __attribute__ ((packed)); | 362 | } __attribute__ ((packed)); |
363 | 363 | ||
364 | /* Integrity Type (ECMA 167r3 3/10.10.3) */ | 364 | /* Integrity Type (ECMA 167r3 3/10.10.3) */ |
@@ -367,48 +367,48 @@ struct logicalVolIntegrityDesc { | |||
367 | 367 | ||
368 | /* Recorded Address (ECMA 167r3 4/7.1) */ | 368 | /* Recorded Address (ECMA 167r3 4/7.1) */ |
369 | typedef struct { | 369 | typedef struct { |
370 | __le32 logicalBlockNum; | 370 | __le32 logicalBlockNum; |
371 | __le16 partitionReferenceNum; | 371 | __le16 partitionReferenceNum; |
372 | } __attribute__ ((packed)) lb_addr; | 372 | } __attribute__ ((packed)) lb_addr; |
373 | 373 | ||
374 | /* ... and its in-core analog */ | 374 | /* ... and its in-core analog */ |
375 | typedef struct { | 375 | typedef struct { |
376 | uint32_t logicalBlockNum; | 376 | uint32_t logicalBlockNum; |
377 | uint16_t partitionReferenceNum; | 377 | uint16_t partitionReferenceNum; |
378 | } kernel_lb_addr; | 378 | } kernel_lb_addr; |
379 | 379 | ||
380 | /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */ | 380 | /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */ |
381 | typedef struct { | 381 | typedef struct { |
382 | __le32 extLength; | 382 | __le32 extLength; |
383 | __le32 extPosition; | 383 | __le32 extPosition; |
384 | } __attribute__ ((packed)) short_ad; | 384 | } __attribute__ ((packed)) short_ad; |
385 | 385 | ||
386 | /* Long Allocation Descriptor (ECMA 167r3 4/14.14.2) */ | 386 | /* Long Allocation Descriptor (ECMA 167r3 4/14.14.2) */ |
387 | typedef struct { | 387 | typedef struct { |
388 | __le32 extLength; | 388 | __le32 extLength; |
389 | lb_addr extLocation; | 389 | lb_addr extLocation; |
390 | uint8_t impUse[6]; | 390 | uint8_t impUse[6]; |
391 | } __attribute__ ((packed)) long_ad; | 391 | } __attribute__ ((packed)) long_ad; |
392 | 392 | ||
393 | typedef struct { | 393 | typedef struct { |
394 | uint32_t extLength; | 394 | uint32_t extLength; |
395 | kernel_lb_addr extLocation; | 395 | kernel_lb_addr extLocation; |
396 | uint8_t impUse[6]; | 396 | uint8_t impUse[6]; |
397 | } kernel_long_ad; | 397 | } kernel_long_ad; |
398 | 398 | ||
399 | /* Extended Allocation Descriptor (ECMA 167r3 4/14.14.3) */ | 399 | /* Extended Allocation Descriptor (ECMA 167r3 4/14.14.3) */ |
400 | typedef struct { | 400 | typedef struct { |
401 | __le32 extLength; | 401 | __le32 extLength; |
402 | __le32 recordedLength; | 402 | __le32 recordedLength; |
403 | __le32 informationLength; | 403 | __le32 informationLength; |
404 | lb_addr extLocation; | 404 | lb_addr extLocation; |
405 | } __attribute__ ((packed)) ext_ad; | 405 | } __attribute__ ((packed)) ext_ad; |
406 | 406 | ||
407 | typedef struct { | 407 | typedef struct { |
408 | uint32_t extLength; | 408 | uint32_t extLength; |
409 | uint32_t recordedLength; | 409 | uint32_t recordedLength; |
410 | uint32_t informationLength; | 410 | uint32_t informationLength; |
411 | kernel_lb_addr extLocation; | 411 | kernel_lb_addr extLocation; |
412 | } kernel_ext_ad; | 412 | } kernel_ext_ad; |
413 | 413 | ||
414 | /* Descriptor Tag (ECMA 167r3 4/7.2 - See 3/7.2) */ | 414 | /* Descriptor Tag (ECMA 167r3 4/7.2 - See 3/7.2) */ |
@@ -428,48 +428,48 @@ typedef struct { | |||
428 | 428 | ||
429 | /* File Set Descriptor (ECMA 167r3 4/14.1) */ | 429 | /* File Set Descriptor (ECMA 167r3 4/14.1) */ |
430 | struct fileSetDesc { | 430 | struct fileSetDesc { |
431 | tag descTag; | 431 | tag descTag; |
432 | timestamp recordingDateAndTime; | 432 | timestamp recordingDateAndTime; |
433 | __le16 interchangeLvl; | 433 | __le16 interchangeLvl; |
434 | __le16 maxInterchangeLvl; | 434 | __le16 maxInterchangeLvl; |
435 | __le32 charSetList; | 435 | __le32 charSetList; |
436 | __le32 maxCharSetList; | 436 | __le32 maxCharSetList; |
437 | __le32 fileSetNum; | 437 | __le32 fileSetNum; |
438 | __le32 fileSetDescNum; | 438 | __le32 fileSetDescNum; |
439 | charspec logicalVolIdentCharSet; | 439 | charspec logicalVolIdentCharSet; |
440 | dstring logicalVolIdent[128]; | 440 | dstring logicalVolIdent[128]; |
441 | charspec fileSetCharSet; | 441 | charspec fileSetCharSet; |
442 | dstring fileSetIdent[32]; | 442 | dstring fileSetIdent[32]; |
443 | dstring copyrightFileIdent[32]; | 443 | dstring copyrightFileIdent[32]; |
444 | dstring abstractFileIdent[32]; | 444 | dstring abstractFileIdent[32]; |
445 | long_ad rootDirectoryICB; | 445 | long_ad rootDirectoryICB; |
446 | regid domainIdent; | 446 | regid domainIdent; |
447 | long_ad nextExt; | 447 | long_ad nextExt; |
448 | long_ad streamDirectoryICB; | 448 | long_ad streamDirectoryICB; |
449 | uint8_t reserved[32]; | 449 | uint8_t reserved[32]; |
450 | } __attribute__ ((packed)); | 450 | } __attribute__ ((packed)); |
451 | 451 | ||
452 | /* Partition Header Descriptor (ECMA 167r3 4/14.3) */ | 452 | /* Partition Header Descriptor (ECMA 167r3 4/14.3) */ |
453 | struct partitionHeaderDesc { | 453 | struct partitionHeaderDesc { |
454 | short_ad unallocSpaceTable; | 454 | short_ad unallocSpaceTable; |
455 | short_ad unallocSpaceBitmap; | 455 | short_ad unallocSpaceBitmap; |
456 | short_ad partitionIntegrityTable; | 456 | short_ad partitionIntegrityTable; |
457 | short_ad freedSpaceTable; | 457 | short_ad freedSpaceTable; |
458 | short_ad freedSpaceBitmap; | 458 | short_ad freedSpaceBitmap; |
459 | uint8_t reserved[88]; | 459 | uint8_t reserved[88]; |
460 | } __attribute__ ((packed)); | 460 | } __attribute__ ((packed)); |
461 | 461 | ||
462 | /* File Identifier Descriptor (ECMA 167r3 4/14.4) */ | 462 | /* File Identifier Descriptor (ECMA 167r3 4/14.4) */ |
463 | struct fileIdentDesc { | 463 | struct fileIdentDesc { |
464 | tag descTag; | 464 | tag descTag; |
465 | __le16 fileVersionNum; | 465 | __le16 fileVersionNum; |
466 | uint8_t fileCharacteristics; | 466 | uint8_t fileCharacteristics; |
467 | uint8_t lengthFileIdent; | 467 | uint8_t lengthFileIdent; |
468 | long_ad icb; | 468 | long_ad icb; |
469 | __le16 lengthOfImpUse; | 469 | __le16 lengthOfImpUse; |
470 | uint8_t impUse[0]; | 470 | uint8_t impUse[0]; |
471 | uint8_t fileIdent[0]; | 471 | uint8_t fileIdent[0]; |
472 | uint8_t padding[0]; | 472 | uint8_t padding[0]; |
473 | } __attribute__ ((packed)); | 473 | } __attribute__ ((packed)); |
474 | 474 | ||
475 | /* File Characteristics (ECMA 167r3 4/14.4.3) */ | 475 | /* File Characteristics (ECMA 167r3 4/14.4.3) */ |
@@ -481,21 +481,21 @@ struct fileIdentDesc { | |||
481 | 481 | ||
482 | /* Allocation Ext Descriptor (ECMA 167r3 4/14.5) */ | 482 | /* Allocation Ext Descriptor (ECMA 167r3 4/14.5) */ |
483 | struct allocExtDesc { | 483 | struct allocExtDesc { |
484 | tag descTag; | 484 | tag descTag; |
485 | __le32 previousAllocExtLocation; | 485 | __le32 previousAllocExtLocation; |
486 | __le32 lengthAllocDescs; | 486 | __le32 lengthAllocDescs; |
487 | } __attribute__ ((packed)); | 487 | } __attribute__ ((packed)); |
488 | 488 | ||
489 | /* ICB Tag (ECMA 167r3 4/14.6) */ | 489 | /* ICB Tag (ECMA 167r3 4/14.6) */ |
490 | typedef struct { | 490 | typedef struct { |
491 | __le32 priorRecordedNumDirectEntries; | 491 | __le32 priorRecordedNumDirectEntries; |
492 | __le16 strategyType; | 492 | __le16 strategyType; |
493 | __le16 strategyParameter; | 493 | __le16 strategyParameter; |
494 | __le16 numEntries; | 494 | __le16 numEntries; |
495 | uint8_t reserved; | 495 | uint8_t reserved; |
496 | uint8_t fileType; | 496 | uint8_t fileType; |
497 | lb_addr parentICBLocation; | 497 | lb_addr parentICBLocation; |
498 | __le16 flags; | 498 | __le16 flags; |
499 | } __attribute__ ((packed)) icbtag; | 499 | } __attribute__ ((packed)) icbtag; |
500 | 500 | ||
501 | /* Strategy Type (ECMA 167r3 4/14.6.2) */ | 501 | /* Strategy Type (ECMA 167r3 4/14.6.2) */ |
@@ -541,41 +541,41 @@ typedef struct { | |||
541 | 541 | ||
542 | /* Indirect Entry (ECMA 167r3 4/14.7) */ | 542 | /* Indirect Entry (ECMA 167r3 4/14.7) */ |
543 | struct indirectEntry { | 543 | struct indirectEntry { |
544 | tag descTag; | 544 | tag descTag; |
545 | icbtag icbTag; | 545 | icbtag icbTag; |
546 | long_ad indirectICB; | 546 | long_ad indirectICB; |
547 | } __attribute__ ((packed)); | 547 | } __attribute__ ((packed)); |
548 | 548 | ||
549 | /* Terminal Entry (ECMA 167r3 4/14.8) */ | 549 | /* Terminal Entry (ECMA 167r3 4/14.8) */ |
550 | struct terminalEntry { | 550 | struct terminalEntry { |
551 | tag descTag; | 551 | tag descTag; |
552 | icbtag icbTag; | 552 | icbtag icbTag; |
553 | } __attribute__ ((packed)); | 553 | } __attribute__ ((packed)); |
554 | 554 | ||
555 | /* File Entry (ECMA 167r3 4/14.9) */ | 555 | /* File Entry (ECMA 167r3 4/14.9) */ |
556 | struct fileEntry { | 556 | struct fileEntry { |
557 | tag descTag; | 557 | tag descTag; |
558 | icbtag icbTag; | 558 | icbtag icbTag; |
559 | __le32 uid; | 559 | __le32 uid; |
560 | __le32 gid; | 560 | __le32 gid; |
561 | __le32 permissions; | 561 | __le32 permissions; |
562 | __le16 fileLinkCount; | 562 | __le16 fileLinkCount; |
563 | uint8_t recordFormat; | 563 | uint8_t recordFormat; |
564 | uint8_t recordDisplayAttr; | 564 | uint8_t recordDisplayAttr; |
565 | __le32 recordLength; | 565 | __le32 recordLength; |
566 | __le64 informationLength; | 566 | __le64 informationLength; |
567 | __le64 logicalBlocksRecorded; | 567 | __le64 logicalBlocksRecorded; |
568 | timestamp accessTime; | 568 | timestamp accessTime; |
569 | timestamp modificationTime; | 569 | timestamp modificationTime; |
570 | timestamp attrTime; | 570 | timestamp attrTime; |
571 | __le32 checkpoint; | 571 | __le32 checkpoint; |
572 | long_ad extendedAttrICB; | 572 | long_ad extendedAttrICB; |
573 | regid impIdent; | 573 | regid impIdent; |
574 | __le64 uniqueID; | 574 | __le64 uniqueID; |
575 | __le32 lengthExtendedAttr; | 575 | __le32 lengthExtendedAttr; |
576 | __le32 lengthAllocDescs; | 576 | __le32 lengthAllocDescs; |
577 | uint8_t extendedAttr[0]; | 577 | uint8_t extendedAttr[0]; |
578 | uint8_t allocDescs[0]; | 578 | uint8_t allocDescs[0]; |
579 | } __attribute__ ((packed)); | 579 | } __attribute__ ((packed)); |
580 | 580 | ||
581 | /* Permissions (ECMA 167r3 4/14.9.5) */ | 581 | /* Permissions (ECMA 167r3 4/14.9.5) */ |
@@ -617,51 +617,51 @@ struct fileEntry { | |||
617 | 617 | ||
618 | /* Extended Attribute Header Descriptor (ECMA 167r3 4/14.10.1) */ | 618 | /* Extended Attribute Header Descriptor (ECMA 167r3 4/14.10.1) */ |
619 | struct extendedAttrHeaderDesc { | 619 | struct extendedAttrHeaderDesc { |
620 | tag descTag; | 620 | tag descTag; |
621 | __le32 impAttrLocation; | 621 | __le32 impAttrLocation; |
622 | __le32 appAttrLocation; | 622 | __le32 appAttrLocation; |
623 | } __attribute__ ((packed)); | 623 | } __attribute__ ((packed)); |
624 | 624 | ||
625 | /* Generic Format (ECMA 167r3 4/14.10.2) */ | 625 | /* Generic Format (ECMA 167r3 4/14.10.2) */ |
626 | struct genericFormat { | 626 | struct genericFormat { |
627 | __le32 attrType; | 627 | __le32 attrType; |
628 | uint8_t attrSubtype; | 628 | uint8_t attrSubtype; |
629 | uint8_t reserved[3]; | 629 | uint8_t reserved[3]; |
630 | __le32 attrLength; | 630 | __le32 attrLength; |
631 | uint8_t attrData[0]; | 631 | uint8_t attrData[0]; |
632 | } __attribute__ ((packed)); | 632 | } __attribute__ ((packed)); |
633 | 633 | ||
634 | /* Character Set Information (ECMA 167r3 4/14.10.3) */ | 634 | /* Character Set Information (ECMA 167r3 4/14.10.3) */ |
635 | struct charSetInfo { | 635 | struct charSetInfo { |
636 | __le32 attrType; | 636 | __le32 attrType; |
637 | uint8_t attrSubtype; | 637 | uint8_t attrSubtype; |
638 | uint8_t reserved[3]; | 638 | uint8_t reserved[3]; |
639 | __le32 attrLength; | 639 | __le32 attrLength; |
640 | __le32 escapeSeqLength; | 640 | __le32 escapeSeqLength; |
641 | uint8_t charSetType; | 641 | uint8_t charSetType; |
642 | uint8_t escapeSeq[0]; | 642 | uint8_t escapeSeq[0]; |
643 | } __attribute__ ((packed)); | 643 | } __attribute__ ((packed)); |
644 | 644 | ||
645 | /* Alternate Permissions (ECMA 167r3 4/14.10.4) */ | 645 | /* Alternate Permissions (ECMA 167r3 4/14.10.4) */ |
646 | struct altPerms { | 646 | struct altPerms { |
647 | __le32 attrType; | 647 | __le32 attrType; |
648 | uint8_t attrSubtype; | 648 | uint8_t attrSubtype; |
649 | uint8_t reserved[3]; | 649 | uint8_t reserved[3]; |
650 | __le32 attrLength; | 650 | __le32 attrLength; |
651 | __le16 ownerIdent; | 651 | __le16 ownerIdent; |
652 | __le16 groupIdent; | 652 | __le16 groupIdent; |
653 | __le16 permission; | 653 | __le16 permission; |
654 | } __attribute__ ((packed)); | 654 | } __attribute__ ((packed)); |
655 | 655 | ||
656 | /* File Times Extended Attribute (ECMA 167r3 4/14.10.5) */ | 656 | /* File Times Extended Attribute (ECMA 167r3 4/14.10.5) */ |
657 | struct fileTimesExtAttr { | 657 | struct fileTimesExtAttr { |
658 | __le32 attrType; | 658 | __le32 attrType; |
659 | uint8_t attrSubtype; | 659 | uint8_t attrSubtype; |
660 | uint8_t reserved[3]; | 660 | uint8_t reserved[3]; |
661 | __le32 attrLength; | 661 | __le32 attrLength; |
662 | __le32 dataLength; | 662 | __le32 dataLength; |
663 | __le32 fileTimeExistence; | 663 | __le32 fileTimeExistence; |
664 | uint8_t fileTimes; | 664 | uint8_t fileTimes; |
665 | } __attribute__ ((packed)); | 665 | } __attribute__ ((packed)); |
666 | 666 | ||
667 | /* FileTimeExistence (ECMA 167r3 4/14.10.5.6) */ | 667 | /* FileTimeExistence (ECMA 167r3 4/14.10.5.6) */ |
@@ -672,47 +672,47 @@ struct fileTimesExtAttr { | |||
672 | 672 | ||
673 | /* Information Times Extended Attribute (ECMA 167r3 4/14.10.6) */ | 673 | /* Information Times Extended Attribute (ECMA 167r3 4/14.10.6) */ |
674 | struct infoTimesExtAttr { | 674 | struct infoTimesExtAttr { |
675 | __le32 attrType; | 675 | __le32 attrType; |
676 | uint8_t attrSubtype; | 676 | uint8_t attrSubtype; |
677 | uint8_t reserved[3]; | 677 | uint8_t reserved[3]; |
678 | __le32 attrLength; | 678 | __le32 attrLength; |
679 | __le32 dataLength; | 679 | __le32 dataLength; |
680 | __le32 infoTimeExistence; | 680 | __le32 infoTimeExistence; |
681 | uint8_t infoTimes[0]; | 681 | uint8_t infoTimes[0]; |
682 | } __attribute__ ((packed)); | 682 | } __attribute__ ((packed)); |
683 | 683 | ||
684 | /* Device Specification (ECMA 167r3 4/14.10.7) */ | 684 | /* Device Specification (ECMA 167r3 4/14.10.7) */ |
685 | struct deviceSpec { | 685 | struct deviceSpec { |
686 | __le32 attrType; | 686 | __le32 attrType; |
687 | uint8_t attrSubtype; | 687 | uint8_t attrSubtype; |
688 | uint8_t reserved[3]; | 688 | uint8_t reserved[3]; |
689 | __le32 attrLength; | 689 | __le32 attrLength; |
690 | __le32 impUseLength; | 690 | __le32 impUseLength; |
691 | __le32 majorDeviceIdent; | 691 | __le32 majorDeviceIdent; |
692 | __le32 minorDeviceIdent; | 692 | __le32 minorDeviceIdent; |
693 | uint8_t impUse[0]; | 693 | uint8_t impUse[0]; |
694 | } __attribute__ ((packed)); | 694 | } __attribute__ ((packed)); |
695 | 695 | ||
696 | /* Implementation Use Extended Attr (ECMA 167r3 4/14.10.8) */ | 696 | /* Implementation Use Extended Attr (ECMA 167r3 4/14.10.8) */ |
697 | struct impUseExtAttr { | 697 | struct impUseExtAttr { |
698 | __le32 attrType; | 698 | __le32 attrType; |
699 | uint8_t attrSubtype; | 699 | uint8_t attrSubtype; |
700 | uint8_t reserved[3]; | 700 | uint8_t reserved[3]; |
701 | __le32 attrLength; | 701 | __le32 attrLength; |
702 | __le32 impUseLength; | 702 | __le32 impUseLength; |
703 | regid impIdent; | 703 | regid impIdent; |
704 | uint8_t impUse[0]; | 704 | uint8_t impUse[0]; |
705 | } __attribute__ ((packed)); | 705 | } __attribute__ ((packed)); |
706 | 706 | ||
707 | /* Application Use Extended Attribute (ECMA 167r3 4/14.10.9) */ | 707 | /* Application Use Extended Attribute (ECMA 167r3 4/14.10.9) */ |
708 | struct appUseExtAttr { | 708 | struct appUseExtAttr { |
709 | __le32 attrType; | 709 | __le32 attrType; |
710 | uint8_t attrSubtype; | 710 | uint8_t attrSubtype; |
711 | uint8_t reserved[3]; | 711 | uint8_t reserved[3]; |
712 | __le32 attrLength; | 712 | __le32 attrLength; |
713 | __le32 appUseLength; | 713 | __le32 appUseLength; |
714 | regid appIdent; | 714 | regid appIdent; |
715 | uint8_t appUse[0]; | 715 | uint8_t appUse[0]; |
716 | } __attribute__ ((packed)); | 716 | } __attribute__ ((packed)); |
717 | 717 | ||
718 | #define EXTATTR_CHAR_SET 1 | 718 | #define EXTATTR_CHAR_SET 1 |
@@ -725,29 +725,29 @@ struct appUseExtAttr { | |||
725 | 725 | ||
726 | /* Unallocated Space Entry (ECMA 167r3 4/14.11) */ | 726 | /* Unallocated Space Entry (ECMA 167r3 4/14.11) */ |
727 | struct unallocSpaceEntry { | 727 | struct unallocSpaceEntry { |
728 | tag descTag; | 728 | tag descTag; |
729 | icbtag icbTag; | 729 | icbtag icbTag; |
730 | __le32 lengthAllocDescs; | 730 | __le32 lengthAllocDescs; |
731 | uint8_t allocDescs[0]; | 731 | uint8_t allocDescs[0]; |
732 | } __attribute__ ((packed)); | 732 | } __attribute__ ((packed)); |
733 | 733 | ||
734 | /* Space Bitmap Descriptor (ECMA 167r3 4/14.12) */ | 734 | /* Space Bitmap Descriptor (ECMA 167r3 4/14.12) */ |
735 | struct spaceBitmapDesc { | 735 | struct spaceBitmapDesc { |
736 | tag descTag; | 736 | tag descTag; |
737 | __le32 numOfBits; | 737 | __le32 numOfBits; |
738 | __le32 numOfBytes; | 738 | __le32 numOfBytes; |
739 | uint8_t bitmap[0]; | 739 | uint8_t bitmap[0]; |
740 | } __attribute__ ((packed)); | 740 | } __attribute__ ((packed)); |
741 | 741 | ||
742 | /* Partition Integrity Entry (ECMA 167r3 4/14.13) */ | 742 | /* Partition Integrity Entry (ECMA 167r3 4/14.13) */ |
743 | struct partitionIntegrityEntry { | 743 | struct partitionIntegrityEntry { |
744 | tag descTag; | 744 | tag descTag; |
745 | icbtag icbTag; | 745 | icbtag icbTag; |
746 | timestamp recordingDateAndTime; | 746 | timestamp recordingDateAndTime; |
747 | uint8_t integrityType; | 747 | uint8_t integrityType; |
748 | uint8_t reserved[175]; | 748 | uint8_t reserved[175]; |
749 | regid impIdent; | 749 | regid impIdent; |
750 | uint8_t impUse[256]; | 750 | uint8_t impUse[256]; |
751 | } __attribute__ ((packed)); | 751 | } __attribute__ ((packed)); |
752 | 752 | ||
753 | /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */ | 753 | /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */ |
@@ -764,46 +764,46 @@ struct partitionIntegrityEntry { | |||
764 | 764 | ||
765 | /* Logical Volume Header Descriptor (ECMA 167r3 4/14.15) */ | 765 | /* Logical Volume Header Descriptor (ECMA 167r3 4/14.15) */ |
766 | struct logicalVolHeaderDesc { | 766 | struct logicalVolHeaderDesc { |
767 | __le64 uniqueID; | 767 | __le64 uniqueID; |
768 | uint8_t reserved[24]; | 768 | uint8_t reserved[24]; |
769 | } __attribute__ ((packed)); | 769 | } __attribute__ ((packed)); |
770 | 770 | ||
771 | /* Path Component (ECMA 167r3 4/14.16.1) */ | 771 | /* Path Component (ECMA 167r3 4/14.16.1) */ |
772 | struct pathComponent { | 772 | struct pathComponent { |
773 | uint8_t componentType; | 773 | uint8_t componentType; |
774 | uint8_t lengthComponentIdent; | 774 | uint8_t lengthComponentIdent; |
775 | __le16 componentFileVersionNum; | 775 | __le16 componentFileVersionNum; |
776 | dstring componentIdent[0]; | 776 | dstring componentIdent[0]; |
777 | } __attribute__ ((packed)); | 777 | } __attribute__ ((packed)); |
778 | 778 | ||
779 | /* File Entry (ECMA 167r3 4/14.17) */ | 779 | /* File Entry (ECMA 167r3 4/14.17) */ |
780 | struct extendedFileEntry { | 780 | struct extendedFileEntry { |
781 | tag descTag; | 781 | tag descTag; |
782 | icbtag icbTag; | 782 | icbtag icbTag; |
783 | __le32 uid; | 783 | __le32 uid; |
784 | __le32 gid; | 784 | __le32 gid; |
785 | __le32 permissions; | 785 | __le32 permissions; |
786 | __le16 fileLinkCount; | 786 | __le16 fileLinkCount; |
787 | uint8_t recordFormat; | 787 | uint8_t recordFormat; |
788 | uint8_t recordDisplayAttr; | 788 | uint8_t recordDisplayAttr; |
789 | __le32 recordLength; | 789 | __le32 recordLength; |
790 | __le64 informationLength; | 790 | __le64 informationLength; |
791 | __le64 objectSize; | 791 | __le64 objectSize; |
792 | __le64 logicalBlocksRecorded; | 792 | __le64 logicalBlocksRecorded; |
793 | timestamp accessTime; | 793 | timestamp accessTime; |
794 | timestamp modificationTime; | 794 | timestamp modificationTime; |
795 | timestamp createTime; | 795 | timestamp createTime; |
796 | timestamp attrTime; | 796 | timestamp attrTime; |
797 | __le32 checkpoint; | 797 | __le32 checkpoint; |
798 | __le32 reserved; | 798 | __le32 reserved; |
799 | long_ad extendedAttrICB; | 799 | long_ad extendedAttrICB; |
800 | long_ad streamDirectoryICB; | 800 | long_ad streamDirectoryICB; |
801 | regid impIdent; | 801 | regid impIdent; |
802 | __le64 uniqueID; | 802 | __le64 uniqueID; |
803 | __le32 lengthExtendedAttr; | 803 | __le32 lengthExtendedAttr; |
804 | __le32 lengthAllocDescs; | 804 | __le32 lengthAllocDescs; |
805 | uint8_t extendedAttr[0]; | 805 | uint8_t extendedAttr[0]; |
806 | uint8_t allocDescs[0]; | 806 | uint8_t allocDescs[0]; |
807 | } __attribute__ ((packed)); | 807 | } __attribute__ ((packed)); |
808 | 808 | ||
809 | #endif /* _ECMA_167_H */ | 809 | #endif /* _ECMA_167_H */ |