~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/udf_167.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #if !defined(_LINUX_UDF_167_H)
  2 #define _LINUX_UDF_167_H
  3 /*
  4  * udf_167.h
  5  *
  6  * DESCRIPTION
  7  *      Definitions from the ECMA 167 standard.
  8  *      http://www.ecma.ch/
  9  *
 10  *      These abbreviations are used to keep the symbols short:
 11  *              Alloc   Allocation
 12  *              App     Application
 13  *              Attr    Attribute
 14  *              Char    Characters
 15  *              Desc    Descriptor
 16  *              Descs   Descriptors
 17  *              Ext     Extent
 18  *              Ident   Identifier
 19  *              Imp     Implementation
 20  *              Lvl     Level
 21  *              Max     Maximum
 22  *              Num     Number
 23  *              Ptr     Pointer
 24  *              Seq     Sequence
 25  *              Std     Standard
 26  *              Struct  Structure
 27  *              Vol     Volume
 28  *      The symbols are otherwise identical to the standard, and the
 29  *      sections of the standard to refer to are indicated.
 30  *
 31  * CONTACTS
 32  *      E-mail regarding any portion of the Linux UDF file system should be
 33  *      directed to the development team mailing list (run by majordomo):
 34  *              linux_udf@hootie.lvld.hp.com
 35  *
 36  * COPYRIGHT
 37  *      This file is distributed under the terms of the GNU General Public
 38  *      License (GPL). Copies of the GPL can be obtained from:
 39  *              ftp://prep.ai.mit.edu/pub/gnu/GPL
 40  *      Each contributing author retains all rights to their own work.
 41  *
 42  * HISTORY
 43  *      July 12, 1997 - Andrew E. Mileski
 44  *      Adapted from the ECMA-167 standard.
 45  *
 46  * 10/2/98 dgb  Adaptation
 47  * 10/4/98      Changes by HJA Sandkuyl
 48  * 10/7/98      Changed FILE_EXISTENCE to FILE_HIDDEN, per UDF 2.0 spec
 49  * 11/26/98     Modifed some entries for UDF 1.5/2.0
 50  * 11/26/98 bf  Fixed typos, non-linux types, more structures
 51  * 12/5/98 dgb  Adjusted structure and content of include files.
 52  */
 53 
 54 #ifdef __KERNEL__
 55 #include <linux/types.h>
 56 #define Uint8   __u8
 57 #define Sint8   __s8
 58 #define Uint16  __u16
 59 #define Sint16  __s16
 60 #define Uint32  __u32
 61 #define Sint32  __s32
 62 #define Uint64  __u64
 63 #define Sint64  __s64
 64 typedef Uint8   dstring;
 65 #else
 66 #define Uint8   unsigned char
 67 #define Sint8   char
 68 #define Uint16  unsigned short
 69 #define Sint16  short
 70 #define Uint32  unsigned int
 71 #define Sint32  int
 72 #define Uint64  unsigned long long
 73 #define Sint64  long long
 74 typedef Uint8   dstring;
 75 #endif
 76 
 77 /* make sure all structures are packed! */
 78 #pragma pack(1)
 79 
 80 /* CS0 Charspec (ECMA 167 1/7.2.1) */
 81 typedef struct {
 82         Uint8 charSetType;
 83         Uint8 charSetInfo[63];
 84 } charspec;
 85 
 86 /* Timestamp (ECMA 167 1/7.3) */
 87 typedef struct {
 88         Uint16 typeAndTimezone;
 89         Uint16 year;
 90         Uint8 month;
 91         Uint8 day;
 92         Uint8 hour;
 93         Uint8 minute;
 94         Uint8 second;
 95         Uint8 centiseconds;
 96         Uint8 hundredsOfMicroseconds;
 97         Uint8 microseconds;
 98 } timestamp;
 99 
100 /* Timestamp types (ECMA 167 1/7.3.1) */
101 #define TIMESTAMP_TYPE_CUT              0x0000U
102 #define TIMESTAMP_TYPE_LOCAL            0x0001U
103 #define TIMESTAMP_TYPE_AGREEMENT        0x0002U
104 
105 /* Entity Identifier (ECMA 167 1/7.4) */
106 typedef struct {
107         Uint8 flags;
108         Uint8 ident[23];
109         Uint8 identSuffix[8];
110 } EntityID;
111 #define regid EntityID
112 
113 /* Entity identifier flags (ECMA 167 1/7.4.1) */
114 #define ENTITYID_FLAGS_DIRTY            0x01U
115 #define ENTITYID_FLAGS_PROTECTED        0x02U
116 
117 /* Volume Structure Descriptor (ECMA 167 2/9.1) */
118 #define STD_ID_LEN      5
119 struct VolStructDesc {
120         Uint8 structType;
121         Uint8 stdIdent[STD_ID_LEN];
122         Uint8 structVersion;
123         Uint8 structData[2041];
124 };
125 
126 /* Std structure identifiers (ECMA 167 2/9.1.2) */
127 #define STD_ID_BEA01    "BEA01"
128 #define STD_ID_BOOT2    "BOOT2"
129 #define STD_ID_CD001    "CD001"
130 #define STD_ID_CDW02    "CDW02"
131 #define STD_ID_NSR02    "NSR02"
132 #define STD_ID_NSR03    "NSR03"
133 #define STD_ID_TEA01    "TEA01"
134 
135 /* Beginning Extended Area Descriptor (ECMA 167 2/9.2) */
136 struct BeginningExtendedAreaDesc {
137         Uint8 structType;
138         Uint8 stdIdent[STD_ID_LEN];
139         Uint8 structVersion;
140         Uint8 structData[2041];
141 };
142 
143 /* Terminating Extended Area Descriptor (ECMA 167 2/9.3) */
144 struct TerminatingExtendedAreaDesc {
145         Uint8 structType;
146         Uint8 stdIdent[STD_ID_LEN];
147         Uint8 structVersion;
148         Uint8 structData[2041];
149 };
150 
151 /* Boot Descriptor (ECMA 167 2/9.4) */
152 struct BootDesc {
153         Uint8 structType;
154         Uint8 stdIdent[STD_ID_LEN];
155         Uint8 structVersion;
156         Uint8 reserved1;
157         EntityID architectureType;
158         EntityID bootIdent;
159         Uint32 bootExtLocation;
160         Uint32 bootExtLength;
161         Uint64 loadAddress;
162         Uint64 startAddress;
163         timestamp descCreationDateAndTime;
164         Uint16 flags;
165         Uint8 reserved2[32];
166         Uint8 bootUse[1906];
167 };
168 
169 /* Boot flags (ECMA 167 2/9.4.12) */
170 #define BOOT_FLAGS_ERASE        1
171 
172 /* Extent Descriptor (ECMA 167 3/7.1) */
173 typedef struct {
174         Uint32 extLength;
175         Uint32 extLocation;
176 } extent_ad;
177 
178 /* Descriptor Tag (ECMA 167 3/7.2) */
179 typedef struct {
180         Uint16 tagIdent;
181         Uint16 descVersion;
182         Uint8 tagChecksum;
183         Uint8 reserved;
184         Uint16 tagSerialNum;
185         Uint16 descCRC;
186         Uint16 descCRCLength;
187         Uint32 tagLocation;
188 } tag;
189 
190 /* Tag Identifiers (ECMA 167 3/7.2.1) */
191 #define TID_UNUSED_DESC                 0x0000U
192 #define TID_PRIMARY_VOL_DESC            0x0001U
193 #define TID_ANCHOR_VOL_DESC_PTR         0x0002U
194 #define TID_VOL_DESC_PTR                0x0003U
195 #define TID_IMP_USE_VOL_DESC            0x0004U
196 #define TID_PARTITION_DESC              0x0005U
197 #define TID_LOGICAL_VOL_DESC            0x0006U
198 #define TID_UNALLOC_SPACE_DESC          0x0007U
199 #define TID_TERMINATING_DESC            0x0008U
200 #define TID_LOGICAL_VOL_INTEGRITY_DESC  0x0009U
201 
202 /* Tag Identifiers (ECMA 167 4/7.2.1) */
203 #define TID_FILE_SET_DESC               0x0100U
204 #define TID_FILE_IDENT_DESC             0x0101U
205 #define TID_ALLOC_EXTENT_DESC           0x0102U
206 #define TID_INDIRECT_ENTRY              0x0103U
207 #define TID_TERMINAL_ENTRY              0x0104U
208 #define TID_FILE_ENTRY                  0x0105U
209 #define TID_EXTENDED_ATTRE_HEADER_DESC  0x0106U
210 #define TID_UNALLOCATED_SPACE_ENTRY     0x0107U
211 #define TID_SPACE_BITMAP_DESC           0x0108U
212 #define TID_PARTITION_INTEGRITY_ENTRY   0x0109U
213 #define TID_EXTENDED_FILE_ENTRY         0x010AU
214 
215 /* NSR Descriptor (ECMA 167 3/9.1) */
216 struct NSRDesc {
217         Uint8 structType;
218         Uint8 stdIdent[STD_ID_LEN];
219         Uint8 structVersion;
220         Uint8 reserved;
221         Uint8 structData[2040];
222 };
223         
224 /* Primary Volume Descriptor (ECMA 167 3/10.1) */
225 struct PrimaryVolDesc {
226         tag descTag;
227         Uint32 volDescSeqNum;
228         Uint32 primaryVolDescNum;
229         dstring volIdent[32];
230         Uint16 volSeqNum;
231         Uint16 maxVolSeqNum;
232         Uint16 interchangeLvl;
233         Uint16 maxInterchangeLvl;
234         Uint32 charSetList;
235         Uint32 maxCharSetList;
236         dstring volSetIdent[128];
237         charspec descCharSet;
238         charspec explanatoryCharSet;
239         extent_ad volAbstract;
240         extent_ad volCopyright;
241         EntityID appIdent;
242         timestamp recordingDateAndTime;
243         EntityID impIdent;
244         Uint8 impUse[64];
245         Uint32 predecessorVolDescSeqLocation;
246         Uint16 flags;
247         Uint8 reserved[22];
248 };
249 
250 /* Primary volume descriptor flags (ECMA 167 3/10.1.21) */
251 #define VOL_SET_IDENT   1
252 
253 /* Anchor Volume Descriptor Pointer (ECMA 167 3/10.2) */
254 struct AnchorVolDescPtr {
255         tag descTag;
256         extent_ad mainVolDescSeqExt;
257         extent_ad reserveVolDescSeqExt;
258         Uint8 reserved[480];
259 };
260 
261 /* Volume Descriptor Pointer (ECMA 167 3/10.3) */
262 struct VolDescPtr {
263         tag descTag;
264         Uint32 volDescSeqNum;
265         extent_ad nextVolDescSeqExt;
266         Uint8 reserved[484];
267 };
268 
269 /* Implementation Use Volume Descriptor (ECMA 167 3/10.4) */
270 struct ImpUseVolDesc {
271         tag descTag;
272         Uint32 volDescSeqNum;
273         EntityID impIdent;
274         Uint8 impUse[460];
275 };
276 
277 /* Partition Descriptor (ECMA 167 3/10.5) */
278 struct PartitionDesc {
279         tag descTag;
280         Uint32 volDescSeqNum;
281         Uint16 partitionFlags;
282         Uint16 partitionNumber;
283         EntityID partitionContents;
284         Uint8 partitionContentsUse[128];
285         Uint32 accessType;
286         Uint32 partitionStartingLocation;
287         Uint32 partitionLength;
288         EntityID impIdent;
289         Uint8 impUse[128];
290         Uint8 reserved[156];
291 };
292 
293 /* Partition Flags (ECMA 167 3/10.5.3) */
294 #define PARTITION_FLAGS_ALLOC   1
295 
296 /* Partition Contents (ECMA 167 3/10.5.5) */
297 #define PARTITION_CONTENTS_FDC01        "+FDC01"
298 #define PARTITION_CONTENTS_CD001        "+CD001"
299 #define PARTITION_CONTENTS_CDW02        "+CDW02"
300 #define PARTITION_CONTENTS_NSR02        "+NSR02"
301 #define PARTITION_CONTENTS_NSR03        "+NSR03"
302 
303 /* Partition Access Types (ECMA 167 3/10.5.7) */
304 #define PARTITION_ACCESS_NONE   0
305 #define PARTITION_ACCESS_R      1
306 #define PARTITION_ACCESS_WO     2
307 #define PARTITION_ACCESS_RW     3
308 #define PARTITION_ACCESS_OW     4
309 
310 /* Logical Volume Descriptor (ECMA 167 3/10.6) */
311 struct LogicalVolDesc {
312         tag descTag;
313         Uint32 volDescSeqNum;
314         charspec descCharSet;
315         dstring logicalVolIdent[128];
316         Uint32 logicalBlockSize;
317         EntityID domainIdent;
318         Uint8 logicalVolContentsUse[16]; /* used to find fileset */
319         Uint32 mapTableLength;
320         Uint32 numPartitionMaps;
321         EntityID impIdent;
322         Uint8 impUse[128];
323         extent_ad integritySeqExt;
324         Uint8 partitionMaps[0];
325 };
326 
327 /* Generic Partition Map (ECMA 167 3/10.7.1) */
328 struct GenericPartitionMap {
329         Uint8 partitionMapType;
330         Uint8 partitionMapLength;
331         Uint8 partitionMapping[0];
332 };
333 
334 /* Partition Map Type (ECMA 167 3/10.7.1.1) */
335 #define PARTITION_MAP_TYPE_NONE         0
336 #define PARTITION_MAP_TYPE_1            1
337 #define PARTITION_MAP_TYPE_2            2
338 
339 /* Type 1 Partition Map (ECMA 167 3/10.7.2) */
340 struct GenericPartitionMap1 {
341         Uint8 partitionMapType;
342         Uint8 partitionMapLength;
343         Uint16 volSeqNum;
344         Uint16 partitionNum;
345 };
346 
347 /* Type 2 Partition Map (ECMA 167 3/10.7.3) */
348 struct GenericPartitionMap2 {
349         Uint8 partitionMapType; /* 2 */
350         Uint8 partitionMapLength; 
351         Uint8 partitionIdent[62];
352 };
353 
354 /* Unallocated Space Descriptor (ECMA 167 3/10.8) */
355 struct UnallocatedSpaceDesc {
356         tag descTag;
357         Uint32 volDescSeqNum;
358         Uint32 numAllocDescs;
359         extent_ad allocDescs[0];
360 };
361 
362 /* Terminating Descriptor (ECMA 3/10.9) */
363 struct TerminatingDesc {
364         tag descTag;
365         Uint8 reserved[496];
366 };
367 
368 struct GenericDesc
369 {
370         tag descTag;
371         Uint32 volDescSeqNum;
372 };
373 
374 /* Logical Volume Integrity Descriptor (ECMA 167 3/10.10) */
375 struct LogicalVolIntegrityDesc {
376         tag descTag;
377         timestamp recordingDateAndTime;
378         Uint32 integrityType;
379         extent_ad nextIntegrityExt;
380         Uint8 logicalVolContentsUse[32];
381         Uint32 numOfPartitions;
382         Uint32 lengthOfImpUse;
383         Uint32 freeSpaceTable[0];
384         Uint32 sizeTable[0];
385         Uint8 impUse[0];
386 };
387 
388 /* Integrity Types (ECMA 167 3/10.10.3) */
389 #define INTEGRITY_TYPE_OPEN     0
390 #define INTEGRITY_TYPE_CLOSE    1
391 
392 /* Recorded Address (ECMA 167 4/7.1) */
393 typedef struct {
394         Uint32 logicalBlockNum;
395         Uint16 partitionReferenceNum;
396 } lb_addr;
397 
398 /* Extent interpretation (ECMA 167 4/14.14.1.1) */
399 #define EXTENT_RECORDED_ALLOCATED               0x00
400 #define EXTENT_NOT_RECORDED_ALLOCATED           0x01
401 #define EXTENT_NOT_RECORDED_NOT_ALLOCATED       0x02
402 #define EXTENT_NEXT_EXTENT_ALLOCDECS            0x03
403 
404 /* Long Allocation Descriptor (ECMA 167 4/14.14.2) */
405 typedef struct {
406         Uint32 extLength;
407         lb_addr extLocation;
408         Uint8 impUse[6];
409 } long_ad;
410         /* upper 2 bits of extLength indicate type */
411 
412 /* File Set Descriptor (ECMA 167 4/14.1) */
413 struct FileSetDesc {
414         tag descTag;
415         timestamp recordingDateAndTime;
416         Uint16 interchangeLvl;
417         Uint16 maxInterchangeLvl;
418         Uint32 charSetList;
419         Uint32 maxCharSetList;
420         Uint32 fileSetNum;
421         Uint32 fileSetDescNum;
422         charspec logicalVolIdentCharSet;
423         dstring logicalVolIdent[128];
424         charspec fileSetCharSet;
425         dstring fileSetIdent[32];
426         dstring copyrightFileIdent[32];
427         dstring abstractFileIdent[32];
428         long_ad rootDirectoryICB;
429         EntityID domainIdent;
430         long_ad nextExt;
431         long_ad streamDirectoryICB;
432         Uint8 reserved[32];
433 };
434 
435 /* Short Allocation Descriptor (ECMA 167 4/14.14.1) */
436 typedef struct {
437         Uint32 extLength;
438         Uint32 extPosition;
439 } short_ad;
440 
441 /* Partition Header Descriptor (ECMA 167 4/14.3) */
442 struct PartitionHeaderDesc {
443         short_ad unallocatedSpaceTable;
444         short_ad unallocatedSpaceBitmap;
445         short_ad partitionIntegrityTable;
446         short_ad freedSpaceTable;
447         short_ad freedSpaceBitmap;
448         Uint8 reserved[88];
449 };
450 
451 /* File Identifier Descriptor (ECMA 167 4/14.4) */
452 struct FileIdentDesc
453 {
454         tag descTag;
455         Uint16 fileVersionNum; /* 1 */
456         Uint8 fileCharacteristics;
457         Uint8 lengthFileIdent;
458         long_ad icb;
459         Uint16 lengthOfImpUse;
460         Uint8 impUse[0];
461         Uint8 fileIdent[0];
462         Uint8 padding[0];
463 };
464 
465 /* File Characteristics (ECMA 167 4/14.4.3) */
466 #define FILE_HIDDEN     1
467 #define FILE_DIRECTORY  2
468 #define FILE_DELETED    4
469 #define FILE_PARENT     8
470 #define FILE_METADATA   0x10 /* UDF 2.0 */
471 
472 /* Allocation Ext Descriptor (ECMA 167 4/14.5) */
473 struct AllocExtDesc
474 {
475         tag descTag;
476         Uint32 previousAllocExtLocation;
477         Uint32 lengthAllocDescs;
478 };
479 
480 /* ICB Tag (ECMA 167 4/14.6) */
481 typedef struct {
482         Uint32 priorRecordedNumDirectEntries;
483         Uint16 strategyType;
484         Uint16 strategyParameter;
485         Uint16 numEntries;
486         Uint8 reserved;
487         Uint8 fileType;
488         lb_addr parentICBLocation;
489         Uint16 flags;
490 } icbtag;
491 
492 /* ICB File Type (ECMA 167 4/14.6.6) */
493 #define FILE_TYPE_NONE          0x00U
494 #define FILE_TYPE_UNALLOC       0x01U
495 #define FILE_TYPE_INTEGRITY     0x02U
496 #define FILE_TYPE_INDIRECT      0x03U
497 #define FILE_TYPE_DIRECTORY     0x04U
498 #define FILE_TYPE_REGULAR       0x05U
499 #define FILE_TYPE_BLOCK         0x06U
500 #define FILE_TYPE_CHAR          0x07U
501 #define FILE_TYPE_EXTENDED      0x08U
502 #define FILE_TYPE_FIFO          0x09U
503 #define FILE_TYPE_SOCKET        0x0aU
504 #define FILE_TYPE_TERMINAL      0x0bU
505 #define FILE_TYPE_SYMLINK       0x0cU
506 #define FILE_TYPE_STREAMDIR     0x0dU /* ECMA 167 4/13 */
507 
508 /* ICB Flags (ECMA 167 4/14.6.8) */
509 #define ICB_FLAG_ALLOC_MASK     0x0007U
510 #define ICB_FLAG_SORTED         0x0008U
511 #define ICB_FLAG_NONRELOCATABLE 0x0010U
512 #define ICB_FLAG_ARCHIVE        0x0020U
513 #define ICB_FLAG_SETUID         0x0040U
514 #define ICB_FLAG_SETGID         0x0080U
515 #define ICB_FLAG_STICKY         0x0100U
516 #define ICB_FLAG_CONTIGUOUS     0x0200U
517 #define ICB_FLAG_SYSTEM         0x0400U
518 #define ICB_FLAG_TRANSFORMED    0x0800U
519 #define ICB_FLAG_MULTIVERSIONS  0x1000U
520 
521 /* ICB Flags Allocation type(ECMA 167 4/14.6.8) */
522 #define ICB_FLAG_AD_SHORT       0
523 #define ICB_FLAG_AD_LONG        1
524 #define ICB_FLAG_AD_EXTENDED    2
525 #define ICB_FLAG_AD_IN_ICB      3
526 
527 /* Indirect Entry (ECMA 167 4/14.7) */
528 struct IndirectEntry {
529         tag descTag;
530         icbtag icbTag;
531         long_ad indirectICB;
532 };
533 
534 /* Terminal Entry (ECMA 167 4/14.8) */
535 struct TerminalEntry {
536         tag descTag;
537         icbtag icbTag;
538 };
539 
540 /* File Entry (ECMA 167 4/14.9) */
541 struct FileEntry {
542         tag                     descTag;
543         icbtag          icbTag;
544         Uint32          uid;
545         Uint32          gid;
546         Uint32          permissions;
547         Uint16          fileLinkCount;
548         Uint8           recordFormat;
549         Uint8           recordDisplayAttr;
550         Uint32          recordLength;
551         Uint64          informationLength;
552         Uint64          logicalBlocksRecorded;
553         timestamp       accessTime;
554         timestamp       modificationTime;
555         timestamp       attrTime;
556         Uint32          checkpoint;
557         long_ad         extendedAttrICB;
558         EntityID        impIdent;
559         Uint64          uniqueID; /* 0= root, 16- (2^32-1) */
560         Uint32          lengthExtendedAttr;
561         Uint32          lengthAllocDescs;
562         Uint8           extendedAttr[0];
563         Uint8           allocDescs[0];
564 };
565 
566 /* File Permissions (ECMA 167 4/14.9.5) */
567 #define PERM_O_EXEC     0x00000001U
568 #define PERM_O_WRITE    0x00000002U
569 #define PERM_O_READ     0x00000004U
570 #define PERM_O_CHATTR   0x00000008U
571 #define PERM_O_DELETE   0x00000010U
572 #define PERM_G_EXEC     0x00000020U
573 #define PERM_G_WRITE    0x00000040U
574 #define PERM_G_READ     0x00000080U
575 #define PERM_G_CHATTR   0x00000100U
576 #define PERM_G_DELETE   0x00000200U
577 #define PERM_U_EXEC     0x00000400U
578 #define PERM_U_WRITE    0x00000800U
579 #define PERM_U_READ     0x00001000U
580 #define PERM_U_CHATTR   0x00002000U
581 #define PERM_U_DELETE   0x00004000U
582 
583 /* File Record Format (ECMA 167 4/14.9.7) */
584 #define RECORD_FMT_NONE                 0
585 #define RECORD_FMT_FIXED_PAD            1
586 #define RECORD_FMT_FIXED                2
587 #define RECORD_FMT_VARIABLE8            3
588 #define RECORD_FMT_VARIABLE16           4
589 #define RECORD_FMT_VARIABLE16_MSB       5
590 #define RECORD_FMT_VARIABLE32           6
591 #define RECORD_FMT_PRINT                7
592 #define RECORD_FMT_LF                   8
593 #define RECORD_FMT_CR                   9
594 #define RECORD_FMT_CRLF                 10
595 #define RECORD_FMT_LFCR                 10
596 
597 /* Extended Attribute Header Descriptor (ECMA 167 4/14.10.1) */
598 struct ExtendedAttrHeaderDesc {
599         tag descTag;
600         Uint32 impAttrLocation;
601         Uint32 appAttrLocation;
602 };
603 
604 /* Generic Attribute Format (ECMA 4/14.10.2) */
605 struct GenericAttrFormat {
606         Uint32 attrType;
607         Uint8 attrSubtype;
608         Uint8 reserved[3];
609         Uint32 attrLength;
610         Uint8 attrData[0];
611 };
612 
613 /* Character Set Attribute Format (ECMA 4/14.10.3) */
614 struct CharSetAttrFormat {
615         Uint32 attrType;                /* 1 */
616         Uint8 attrSubtype;              /* 1 */
617         Uint8 reserved[3];
618         Uint32 attrLength;
619         Uint32 escapeSeqLength;
620         Uint8 charSetType;
621         Uint8 escapeSeq[0];
622 };
623 
624 /* Alternate Permissions (ECMA 167 4/14.10.4) */
625 struct AlternatePermissionsExtendedAttr {
626         Uint32 attrType;                /* 3 */
627         Uint8 attrSubtype;              /* 1 */
628         Uint8 reserved[3];
629         Uint32 attrLength;
630         Uint16 ownerIdent;
631         Uint16 groupIdent;
632         Uint16 permission;
633 };
634 
635 /* File Times Extended Attribute (ECMA 167 4/14.10.5) */
636 struct FileTimesExtendedAttr {
637         Uint32 attrType;                /* 5 */
638         Uint8 attrSubtype;              /* 1 */
639         Uint8 reserved[3];
640         Uint32 attrLength;
641         Uint32 dataLength;
642         Uint32 fileTimeExistence;
643         Uint8 fileTimes;
644 };
645 
646 /* FileTimeExistence (ECMA 167 4/14.10.5.6) */
647 #define FTE_CREATION    0
648 #define FTE_DELETION    2
649 #define FTE_EFFECTIVE   3
650 #define FTE_BACKUP      5
651 
652 /* Information Times Extended Attribute (ECMA 167 4/14.10.6) */
653 struct InfoTimesExtendedAttr {
654         Uint32 attrType;                /* 6 */
655         Uint8 attrSubtype;              /* 1 */
656         Uint8 reserved[3];
657         Uint32 attrLength;
658         Uint32 dataLength;
659         Uint32 infoTimeExistence;
660         Uint8 infoTimes[0];
661 };
662 
663 /* Device Specification Extended Attribute (ECMA 167 4/14.10.7) */
664 struct DeviceSpecificationExtendedAttr {
665         Uint32 attrType;                /* 12 */
666         Uint8 attrSubtype;              /* 1 */
667         Uint8 reserved[3];
668         Uint32 attrLength;
669         Uint32 impUseLength;
670         Uint32 majorDeviceIdent;
671         Uint32 minorDeviceIdent;
672         Uint8 impUse[0];
673 };
674 
675 /* Implementation Use Extended Attr (ECMA 167 4/14.10.8) */
676 struct ImpUseExtendedAttr {
677         Uint32 attrType;                /* 2048 */
678         Uint8 attrSubtype;              /* 1 */
679         Uint8 reserved[3];
680         Uint32 attrLength;
681         Uint32 impUseLength;
682         EntityID impIdent;
683         Uint8 impUse[0];
684 };
685 
686 /* Application Use Extended Attribute (ECMA 167 4/14.10.9) */
687 struct AppUseExtendedAttr {
688         Uint32 attrType;                /* 65536 */
689         Uint8 attrSubtype;              /* 1 */
690         Uint8 reserved[3];
691         Uint32 attrLength;
692         Uint32 appUseLength;
693         EntityID appIdent;
694         Uint8 appUse[0];
695 };
696 
697 #define EXTATTR_CHAR_SET        1
698 #define EXTATTR_ALT_PERMS       3
699 #define EXTATTR_FILE_TIMES      5
700 #define EXTATTR_INFO_TIMES      6
701 #define EXTATTR_DEV_SPEC        12
702 #define EXTATTR_IMP_USE         2048
703 #define EXTATTR_APP_USE         65536
704 
705 
706 /* Unallocated Space Entry (ECMA 167 4/14.11) */
707 struct UnallocatedSpaceEntry {
708         tag descTag;
709         icbtag icbTag;
710         Uint32 lengthAllocDescs;
711         Uint8 allocDescs[0];
712 };
713 
714 /* Space Bitmap Descriptor (ECMA 167 4/14.12) */
715 struct SpaceBitmapDesc {
716         tag descTag;
717         Uint32 numOfBits;
718         Uint32 numOfBytes;
719         Uint8 bitmap[0];
720 };
721 
722 /* Partition Integrity Entry (ECMA 167 4/14.13) */
723 struct PartitionIntegrityEntry {
724         tag descTag;
725         icbtag icbTag;
726         timestamp recordingDateAndTime;
727         Uint8 integrityType;
728         Uint8 reserved[175];
729         EntityID impIdent;
730         Uint8 impUse[256];
731 };
732 
733 /* Extended Allocation Descriptor (ECMA 167 4/14.14.3) */
734 typedef struct { /* ECMA 167 4/14.14.3 */
735         Uint32 extLength;
736         Uint32 recordedLength;
737         Uint32 informationLength;
738         lb_addr extLocation;
739 } ext_ad;
740 
741 /* Logical Volume Header Descriptor (ECMA 167 4/14.5) */
742 struct LogicalVolHeaderDesc {
743         Uint64 uniqueID;
744         Uint8 reserved[24];
745 };
746 
747 /* Path Component (ECMA 167 4/14.16.1) */
748 struct PathComponent {
749         Uint8 componentType;
750         Uint8 lengthComponentIdent;
751         Uint16 componentFileVersionNum;
752         dstring componentIdent[0];
753 };
754 
755 /* File Entry (ECMA 167 4/14.17) */
756 struct ExtendedFileEntry {
757         tag                     descTag;
758         icbtag          icbTag;
759         Uint32          uid;
760         Uint32          gid;
761         Uint32          permissions;
762         Uint16          fileLinkCount;
763         Uint8           recordFormat;
764         Uint8           recordDisplayAttr;
765         Uint32          recordLength;
766         Uint64          informationLength;
767         Uint64          objectSize;
768         Uint64          logicalBlocksRecorded;
769         timestamp       accessTime;
770         timestamp       modificationTime;
771         timestamp       createTime;
772         timestamp       attrTime;
773         Uint32          checkpoint;
774         Uint32          reserved;
775         long_ad         extendedAttrICB;
776         long_ad         streamDirectoryICB;
777         EntityID        impIdent;
778         Uint64          uniqueID;
779         Uint32          lengthExtendedAttr;
780         Uint32          lengthAllocDescs;
781         Uint8           extendedAttr[0];
782         Uint8           allocDescs[0];
783 };
784 #pragma pack()
785 
786 #endif /* !defined(_LINUX_UDF_167_H) */
787 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.