Btrfs: fix the file clone ioctl for preallocated extents
[safe/jmp/linux-2.6] / fs / udf / ecma_167.h
index 294ce2d..4792b77 100644 (file)
 #define _ECMA_167_H 1
 
 /* Character set specification (ECMA 167r3 1/7.2.1) */
-typedef struct {
-       uint8_t charSetType;
-       uint8_t charSetInfo[63];
-} __attribute__ ((packed)) charspec;
+struct charspec {
+       uint8_t         charSetType;
+       uint8_t         charSetInfo[63];
+} __attribute__ ((packed));
 
 /* Character Set Type (ECMA 167r3 1/7.2.1.1) */
 #define CHARSPEC_TYPE_CS0              0x00    /* (1/7.2.2) */
@@ -54,34 +54,21 @@ typedef struct {
 #define CHARSPEC_TYPE_CS7              0x07    /* (1/7.2.9) */
 #define CHARSPEC_TYPE_CS8              0x08    /* (1/7.2.10) */
 
-typedef uint8_t dstring;
+typedef uint8_t                dstring;
 
 /* Timestamp (ECMA 167r3 1/7.3) */
-typedef struct {
-       __le16 typeAndTimezone;
-       __le16 year;
-       uint8_t month;
-       uint8_t day;
-       uint8_t hour;
-       uint8_t minute;
-       uint8_t second;
-       uint8_t centiseconds;
-       uint8_t hundredsOfMicroseconds;
-       uint8_t microseconds;
-} __attribute__ ((packed)) timestamp;
-
-typedef struct {
-       uint16_t typeAndTimezone;
-       int16_t year;
-       uint8_t month;
-       uint8_t day;
-       uint8_t hour;
-       uint8_t minute;
-       uint8_t second;
-       uint8_t centiseconds;
-       uint8_t hundredsOfMicroseconds;
-       uint8_t microseconds;
-} __attribute__ ((packed)) kernel_timestamp;
+struct timestamp {
+       __le16          typeAndTimezone;
+       __le16          year;
+       uint8_t         month;
+       uint8_t         day;
+       uint8_t         hour;
+       uint8_t         minute;
+       uint8_t         second;
+       uint8_t         centiseconds;
+       uint8_t         hundredsOfMicroseconds;
+       uint8_t         microseconds;
+} __attribute__ ((packed));
 
 /* Type and Time Zone (ECMA 167r3 1/7.3.1) */
 #define TIMESTAMP_TYPE_MASK            0xF000
@@ -91,11 +78,11 @@ typedef struct {
 #define TIMESTAMP_TIMEZONE_MASK                0x0FFF
 
 /* Entity identifier (ECMA 167r3 1/7.4) */
-typedef struct {
-       uint8_t flags;
-       uint8_t ident[23];
-       uint8_t identSuffix[8];
-} __attribute__ ((packed)) regid;
+struct regid {
+       uint8_t         flags;
+       uint8_t         ident[23];
+       uint8_t         identSuffix[8];
+} __attribute__ ((packed));
 
 /* Flags (ECMA 167r3 1/7.4.1) */
 #define ENTITYID_FLAGS_DIRTY           0x00
@@ -104,10 +91,10 @@ typedef struct {
 /* Volume Structure Descriptor (ECMA 167r3 2/9.1) */
 #define VSD_STD_ID_LEN                 5
 struct volStructDesc {
-       uint8_t structType;
-       uint8_t stdIdent[VSD_STD_ID_LEN];
-       uint8_t structVersion;
-       uint8_t structData[2041];
+       uint8_t         structType;
+       uint8_t         stdIdent[VSD_STD_ID_LEN];
+       uint8_t         structVersion;
+       uint8_t         structData[2041];
 } __attribute__ ((packed));
 
 /* Standard Identifier (EMCA 167r2 2/9.1.2) */
@@ -123,63 +110,63 @@ struct volStructDesc {
 
 /* Beginning Extended Area Descriptor (ECMA 167r3 2/9.2) */
 struct beginningExtendedAreaDesc {
-       uint8_t structType;
-       uint8_t stdIdent[VSD_STD_ID_LEN];
-       uint8_t structVersion;
-       uint8_t structData[2041];
+       uint8_t         structType;
+       uint8_t         stdIdent[VSD_STD_ID_LEN];
+       uint8_t         structVersion;
+       uint8_t         structData[2041];
 } __attribute__ ((packed));
 
 /* Terminating Extended Area Descriptor (ECMA 167r3 2/9.3) */
 struct terminatingExtendedAreaDesc {
-       uint8_t structType;
-       uint8_t stdIdent[VSD_STD_ID_LEN];
-       uint8_t structVersion;
-       uint8_t structData[2041];
+       uint8_t         structType;
+       uint8_t         stdIdent[VSD_STD_ID_LEN];
+       uint8_t         structVersion;
+       uint8_t         structData[2041];
 } __attribute__ ((packed));
 
 /* Boot Descriptor (ECMA 167r3 2/9.4) */
 struct bootDesc {
-       uint8_t structType;
-       uint8_t stdIdent[VSD_STD_ID_LEN];
-       uint8_t structVersion;
-       uint8_t reserved1;
-       regid archType;
-       regid bootIdent;
-       __le32 bootExtLocation;
-       __le32 bootExtLength;
-       __le64 loadAddress;
-       __le64 startAddress;
-       timestamp descCreationDateAndTime;
-       __le16 flags;
-       uint8_t reserved2[32];
-       uint8_t bootUse[1906];
+       uint8_t                 structType;
+       uint8_t                 stdIdent[VSD_STD_ID_LEN];
+       uint8_t                 structVersion;
+       uint8_t                 reserved1;
+       struct regid            archType;
+       struct regid            bootIdent;
+       __le32                  bootExtLocation;
+       __le32                  bootExtLength;
+       __le64                  loadAddress;
+       __le64                  startAddress;
+       struct timestamp        descCreationDateAndTime;
+       __le16                  flags;
+       uint8_t                 reserved2[32];
+       uint8_t                 bootUse[1906];
 } __attribute__ ((packed));
 
 /* Flags (ECMA 167r3 2/9.4.12) */
 #define BOOT_FLAGS_ERASE               0x01
 
 /* Extent Descriptor (ECMA 167r3 3/7.1) */
-typedef struct {
-       __le32 extLength;
-       __le32 extLocation;
-} __attribute__ ((packed)) extent_ad;
+struct extent_ad {
+       __le32          extLength;
+       __le32          extLocation;
+} __attribute__ ((packed));
 
-typedef struct {
-       uint32_t extLength;
-       uint32_t extLocation;
-} kernel_extent_ad;
+struct kernel_extent_ad {
+       uint32_t        extLength;
+       uint32_t        extLocation;
+};
 
 /* Descriptor Tag (ECMA 167r3 3/7.2) */
-typedef struct {
-       __le16 tagIdent;
-       __le16 descVersion;
-       uint8_t tagChecksum;
-       uint8_t reserved;
-       __le16 tagSerialNum;
-       __le16 descCRC;
-       __le16 descCRCLength;
-       __le32 tagLocation;
-} __attribute__ ((packed)) tag;
+struct tag {
+       __le16          tagIdent;
+       __le16          descVersion;
+       uint8_t         tagChecksum;
+       uint8_t         reserved;
+       __le16          tagSerialNum;
+       __le16          descCRC;
+       __le16          descCRCLength;
+       __le32          tagLocation;
+} __attribute__ ((packed));
 
 /* Tag Identifier (ECMA 167r3 3/7.2.1) */
 #define TAG_IDENT_PVD                  0x0001
@@ -194,37 +181,37 @@ typedef struct {
 
 /* NSR Descriptor (ECMA 167r3 3/9.1) */
 struct NSRDesc {
-       uint8_t structType;
-       uint8_t stdIdent[VSD_STD_ID_LEN];
-       uint8_t structVersion;
-       uint8_t reserved;
-       uint8_t structData[2040];
+       uint8_t         structType;
+       uint8_t         stdIdent[VSD_STD_ID_LEN];
+       uint8_t         structVersion;
+       uint8_t         reserved;
+       uint8_t         structData[2040];
 } __attribute__ ((packed));
 
 /* Primary Volume Descriptor (ECMA 167r3 3/10.1) */
 struct primaryVolDesc {
-       tag descTag;
-       __le32 volDescSeqNum;
-       __le32 primaryVolDescNum;
-       dstring volIdent[32];
-       __le16 volSeqNum;
-       __le16 maxVolSeqNum;
-       __le16 interchangeLvl;
-       __le16 maxInterchangeLvl;
-       __le32 charSetList;
-       __le32 maxCharSetList;
-       dstring volSetIdent[128];
-       charspec descCharSet;
-       charspec explanatoryCharSet;
-       extent_ad volAbstract;
-       extent_ad volCopyright;
-       regid appIdent;
-       timestamp recordingDateAndTime;
-       regid impIdent;
-       uint8_t impUse[64];
-       __le32 predecessorVolDescSeqLocation;
-       __le16 flags;
-       uint8_t reserved[22];
+       struct tag              descTag;
+       __le32                  volDescSeqNum;
+       __le32                  primaryVolDescNum;
+       dstring                 volIdent[32];
+       __le16                  volSeqNum;
+       __le16                  maxVolSeqNum;
+       __le16                  interchangeLvl;
+       __le16                  maxInterchangeLvl;
+       __le32                  charSetList;
+       __le32                  maxCharSetList;
+       dstring                 volSetIdent[128];
+       struct charspec         descCharSet;
+       struct charspec         explanatoryCharSet;
+       struct extent_ad        volAbstract;
+       struct extent_ad        volCopyright;
+       struct regid            appIdent;
+       struct timestamp        recordingDateAndTime;
+       struct regid            impIdent;
+       uint8_t                 impUse[64];
+       __le32                  predecessorVolDescSeqLocation;
+       __le16                  flags;
+       uint8_t                 reserved[22];
 } __attribute__ ((packed));
 
 /* Flags (ECMA 167r3 3/10.1.21) */
@@ -232,40 +219,40 @@ struct primaryVolDesc {
 
 /* Anchor Volume Descriptor Pointer (ECMA 167r3 3/10.2) */
 struct anchorVolDescPtr {
-       tag descTag;
-       extent_ad mainVolDescSeqExt;
-       extent_ad reserveVolDescSeqExt;
-       uint8_t reserved[480];
+       struct tag              descTag;
+       struct extent_ad        mainVolDescSeqExt;
+       struct extent_ad        reserveVolDescSeqExt;
+       uint8_t                 reserved[480];
 } __attribute__ ((packed));
 
 /* Volume Descriptor Pointer (ECMA 167r3 3/10.3) */
 struct volDescPtr {
-       tag descTag;
-       __le32 volDescSeqNum;
-       extent_ad nextVolDescSeqExt;
-       uint8_t reserved[484];
+       struct tag              descTag;
+       __le32                  volDescSeqNum;
+       struct extent_ad        nextVolDescSeqExt;
+       uint8_t                 reserved[484];
 } __attribute__ ((packed));
 
 /* Implementation Use Volume Descriptor (ECMA 167r3 3/10.4) */
 struct impUseVolDesc {
-       tag descTag;
-       __le32 volDescSeqNum;
-       regid impIdent;
-       uint8_t impUse[460];
+       struct tag      descTag;
+       __le32          volDescSeqNum;
+       struct regid    impIdent;
+       uint8_t         impUse[460];
 } __attribute__ ((packed));
 
 /* Partition Descriptor (ECMA 167r3 3/10.5) */
 struct partitionDesc {
-       tag descTag;
+       struct tag descTag;
        __le32 volDescSeqNum;
        __le16 partitionFlags;
        __le16 partitionNumber;
-       regid partitionContents;
+       struct regid partitionContents;
        uint8_t partitionContentsUse[128];
        __le32 accessType;
        __le32 partitionStartingLocation;
        __le32 partitionLength;
-       regid impIdent;
+       struct regid impIdent;
        uint8_t impUse[128];
        uint8_t reserved[156];
 } __attribute__ ((packed));
@@ -291,26 +278,26 @@ struct partitionDesc {
 
 /* Logical Volume Descriptor (ECMA 167r3 3/10.6) */
 struct logicalVolDesc {
-       tag descTag;
-       __le32 volDescSeqNum;
-       charspec descCharSet;
-       dstring logicalVolIdent[128];
-       __le32 logicalBlockSize;
-       regid domainIdent;
-       uint8_t logicalVolContentsUse[16];
-       __le32 mapTableLength;
-       __le32 numPartitionMaps;
-       regid impIdent;
-       uint8_t impUse[128];
-       extent_ad integritySeqExt;
-       uint8_t partitionMaps[0];
+       struct tag              descTag;
+       __le32                  volDescSeqNum;
+       struct charspec         descCharSet;
+       dstring                 logicalVolIdent[128];
+       __le32                  logicalBlockSize;
+       struct regid            domainIdent;
+       uint8_t                 logicalVolContentsUse[16];
+       __le32                  mapTableLength;
+       __le32                  numPartitionMaps;
+       struct regid            impIdent;
+       uint8_t                 impUse[128];
+       struct extent_ad        integritySeqExt;
+       uint8_t                 partitionMaps[0];
 } __attribute__ ((packed));
 
 /* Generic Partition Map (ECMA 167r3 3/10.7.1) */
 struct genericPartitionMap {
-       uint8_t partitionMapType;
-       uint8_t partitionMapLength;
-       uint8_t partitionMapping[0];
+       uint8_t         partitionMapType;
+       uint8_t         partitionMapLength;
+       uint8_t         partitionMapping[0];
 } __attribute__ ((packed));
 
 /* Partition Map Type (ECMA 167r3 3/10.7.1.1) */
@@ -320,45 +307,45 @@ struct genericPartitionMap {
 
 /* Type 1 Partition Map (ECMA 167r3 3/10.7.2) */
 struct genericPartitionMap1 {
-       uint8_t partitionMapType;
-       uint8_t partitionMapLength;
-       __le16 volSeqNum;
-       __le16 partitionNum;
+       uint8_t         partitionMapType;
+       uint8_t         partitionMapLength;
+       __le16          volSeqNum;
+       __le16          partitionNum;
 } __attribute__ ((packed));
 
 /* Type 2 Partition Map (ECMA 167r3 3/10.7.3) */
 struct genericPartitionMap2 {
-       uint8_t partitionMapType;
-       uint8_t partitionMapLength;
-       uint8_t partitionIdent[62];
+       uint8_t         partitionMapType;
+       uint8_t         partitionMapLength;
+       uint8_t         partitionIdent[62];
 } __attribute__ ((packed));
 
 /* Unallocated Space Descriptor (ECMA 167r3 3/10.8) */
 struct unallocSpaceDesc {
-       tag descTag;
-       __le32 volDescSeqNum;
-       __le32 numAllocDescs;
-       extent_ad allocDescs[0];
+       struct tag              descTag;
+       __le32                  volDescSeqNum;
+       __le32                  numAllocDescs;
+       struct extent_ad        allocDescs[0];
 } __attribute__ ((packed));
 
 /* Terminating Descriptor (ECMA 167r3 3/10.9) */
 struct terminatingDesc {
-       tag descTag;
-       uint8_t reserved[496];
+       struct tag      descTag;
+       uint8_t         reserved[496];
 } __attribute__ ((packed));
 
 /* Logical Volume Integrity Descriptor (ECMA 167r3 3/10.10) */
 struct logicalVolIntegrityDesc {
-       tag descTag;
-       timestamp recordingDateAndTime;
-       __le32 integrityType;
-       extent_ad nextIntegrityExt;
-       uint8_t logicalVolContentsUse[32];
-       __le32 numOfPartitions;
-       __le32 lengthOfImpUse;
-       __le32 freeSpaceTable[0];
-       __le32 sizeTable[0];
-       uint8_t impUse[0];
+       struct tag              descTag;
+       struct timestamp        recordingDateAndTime;
+       __le32                  integrityType;
+       struct extent_ad        nextIntegrityExt;
+       uint8_t                 logicalVolContentsUse[32];
+       __le32                  numOfPartitions;
+       __le32                  lengthOfImpUse;
+       __le32                  freeSpaceTable[0];
+       __le32                  sizeTable[0];
+       uint8_t                 impUse[0];
 } __attribute__ ((packed));
 
 /* Integrity Type (ECMA 167r3 3/10.10.3) */
@@ -366,50 +353,50 @@ struct logicalVolIntegrityDesc {
 #define LVID_INTEGRITY_TYPE_CLOSE      0x00000001
 
 /* Recorded Address (ECMA 167r3 4/7.1) */
-typedef struct {
-       __le32 logicalBlockNum;
-       __le16 partitionReferenceNum;
-} __attribute__ ((packed)) lb_addr;
+struct lb_addr {
+       __le32          logicalBlockNum;
+       __le16          partitionReferenceNum;
+} __attribute__ ((packed));
 
 /* ... and its in-core analog */
-typedef struct {
-       uint32_t logicalBlockNum;
-       uint16_t partitionReferenceNum;
-} kernel_lb_addr;
+struct kernel_lb_addr {
+       uint32_t                logicalBlockNum;
+       uint16_t                partitionReferenceNum;
+};
 
 /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */
-typedef struct {
-       __le32 extLength;
-       __le32 extPosition;
-} __attribute__ ((packed)) short_ad;
+struct short_ad {
+        __le32         extLength;
+        __le32         extPosition;
+} __attribute__ ((packed));
 
 /* Long Allocation Descriptor (ECMA 167r3 4/14.14.2) */
-typedef struct {
-       __le32 extLength;
-       lb_addr extLocation;
-       uint8_t impUse[6];
-} __attribute__ ((packed)) long_ad;
-
-typedef struct {
-       uint32_t extLength;
-       kernel_lb_addr extLocation;
-       uint8_t impUse[6];
-} kernel_long_ad;
+struct long_ad {
+       __le32          extLength;
+       struct lb_addr  extLocation;
+       uint8_t         impUse[6];
+} __attribute__ ((packed));
+
+struct kernel_long_ad {
+       uint32_t                extLength;
+       struct kernel_lb_addr   extLocation;
+       uint8_t                 impUse[6];
+};
 
 /* Extended Allocation Descriptor (ECMA 167r3 4/14.14.3) */
-typedef struct {
-       __le32 extLength;
-       __le32 recordedLength;
-       __le32 informationLength;
-       lb_addr extLocation;
-} __attribute__ ((packed)) ext_ad;
-
-typedef struct {
-       uint32_t extLength;
-       uint32_t recordedLength;
-       uint32_t informationLength;
-       kernel_lb_addr extLocation;
-} kernel_ext_ad;
+struct ext_ad {
+       __le32          extLength;
+       __le32          recordedLength;
+       __le32          informationLength;
+       struct lb_addr  extLocation;
+} __attribute__ ((packed));
+
+struct kernel_ext_ad {
+       uint32_t                extLength;
+       uint32_t                recordedLength;
+       uint32_t                informationLength;
+       struct kernel_lb_addr   extLocation;
+};
 
 /* Descriptor Tag (ECMA 167r3 4/7.2 - See 3/7.2) */
 
@@ -428,48 +415,48 @@ typedef struct {
 
 /* File Set Descriptor (ECMA 167r3 4/14.1) */
 struct fileSetDesc {
-       tag descTag;
-       timestamp recordingDateAndTime;
-       __le16 interchangeLvl;
-       __le16 maxInterchangeLvl;
-       __le32 charSetList;
-       __le32 maxCharSetList;
-       __le32 fileSetNum;
-       __le32 fileSetDescNum;
-       charspec logicalVolIdentCharSet;
-       dstring logicalVolIdent[128];
-       charspec fileSetCharSet;
-       dstring fileSetIdent[32];
-       dstring copyrightFileIdent[32];
-       dstring abstractFileIdent[32];
-       long_ad rootDirectoryICB;
-       regid domainIdent;
-       long_ad nextExt;
-       long_ad streamDirectoryICB;
-       uint8_t reserved[32];
+       struct tag              descTag;
+       struct timestamp        recordingDateAndTime;
+       __le16                  interchangeLvl;
+       __le16                  maxInterchangeLvl;
+       __le32                  charSetList;
+       __le32                  maxCharSetList;
+       __le32                  fileSetNum;
+       __le32                  fileSetDescNum;
+       struct charspec         logicalVolIdentCharSet;
+       dstring                 logicalVolIdent[128];
+       struct charspec         fileSetCharSet;
+       dstring                 fileSetIdent[32];
+       dstring                 copyrightFileIdent[32];
+       dstring                 abstractFileIdent[32];
+       struct long_ad          rootDirectoryICB;
+       struct regid            domainIdent;
+       struct long_ad          nextExt;
+       struct long_ad          streamDirectoryICB;
+       uint8_t                 reserved[32];
 } __attribute__ ((packed));
 
 /* Partition Header Descriptor (ECMA 167r3 4/14.3) */
 struct partitionHeaderDesc {
-       short_ad unallocSpaceTable;
-       short_ad unallocSpaceBitmap;
-       short_ad partitionIntegrityTable;
-       short_ad freedSpaceTable;
-       short_ad freedSpaceBitmap;
-       uint8_t reserved[88];
+       struct short_ad unallocSpaceTable;
+       struct short_ad unallocSpaceBitmap;
+       struct short_ad partitionIntegrityTable;
+       struct short_ad freedSpaceTable;
+       struct short_ad freedSpaceBitmap;
+       uint8_t         reserved[88];
 } __attribute__ ((packed));
 
 /* File Identifier Descriptor (ECMA 167r3 4/14.4) */
 struct fileIdentDesc {
-       tag descTag;
-       __le16 fileVersionNum;
-       uint8_t fileCharacteristics;
-       uint8_t lengthFileIdent;
-       long_ad icb;
-       __le16 lengthOfImpUse;
-       uint8_t impUse[0];
-       uint8_t fileIdent[0];
-       uint8_t padding[0];
+       struct tag      descTag;
+       __le16          fileVersionNum;
+       uint8_t         fileCharacteristics;
+       uint8_t         lengthFileIdent;
+       struct long_ad  icb;
+       __le16          lengthOfImpUse;
+       uint8_t         impUse[0];
+       uint8_t         fileIdent[0];
+       uint8_t         padding[0];
 } __attribute__ ((packed));
 
 /* File Characteristics (ECMA 167r3 4/14.4.3) */
@@ -481,22 +468,22 @@ struct fileIdentDesc {
 
 /* Allocation Ext Descriptor (ECMA 167r3 4/14.5) */
 struct allocExtDesc {
-       tag descTag;
-       __le32 previousAllocExtLocation;
-       __le32 lengthAllocDescs;
+       struct tag      descTag;
+       __le32          previousAllocExtLocation;
+       __le32          lengthAllocDescs;
 } __attribute__ ((packed));
 
 /* ICB Tag (ECMA 167r3 4/14.6) */
-typedef struct {
-       __le32 priorRecordedNumDirectEntries;
-       __le16 strategyType;
-       __le16 strategyParameter;
-       __le16 numEntries;
-       uint8_t reserved;
-       uint8_t fileType;
-       lb_addr parentICBLocation;
-       __le16 flags;
-} __attribute__ ((packed)) icbtag;
+struct icbtag {
+       __le32          priorRecordedNumDirectEntries;
+       __le16          strategyType;
+       __le16          strategyParameter;
+       __le16          numEntries;
+       uint8_t         reserved;
+       uint8_t         fileType;
+       struct lb_addr  parentICBLocation;
+       __le16          flags;
+} __attribute__ ((packed));
 
 /* Strategy Type (ECMA 167r3 4/14.6.2) */
 #define ICBTAG_STRATEGY_TYPE_UNDEF     0x0000
@@ -541,41 +528,41 @@ typedef struct {
 
 /* Indirect Entry (ECMA 167r3 4/14.7) */
 struct indirectEntry {
-       tag descTag;
-       icbtag icbTag;
-       long_ad indirectICB;
+       struct tag      descTag;
+       struct icbtag   icbTag;
+       struct long_ad  indirectICB;
 } __attribute__ ((packed));
 
 /* Terminal Entry (ECMA 167r3 4/14.8) */
 struct terminalEntry {
-       tag descTag;
-       icbtag icbTag;
+       struct tag      descTag;
+       struct icbtag   icbTag;
 } __attribute__ ((packed));
 
 /* File Entry (ECMA 167r3 4/14.9) */
 struct fileEntry {
-       tag descTag;
-       icbtag icbTag;
-       __le32 uid;
-       __le32 gid;
-       __le32 permissions;
-       __le16 fileLinkCount;
-       uint8_t recordFormat;
-       uint8_t recordDisplayAttr;
-       __le32 recordLength;
-       __le64 informationLength;
-       __le64 logicalBlocksRecorded;
-       timestamp accessTime;
-       timestamp modificationTime;
-       timestamp attrTime;
-       __le32 checkpoint;
-       long_ad extendedAttrICB;
-       regid impIdent;
-       __le64 uniqueID;
-       __le32 lengthExtendedAttr;
-       __le32 lengthAllocDescs;
-       uint8_t extendedAttr[0];
-       uint8_t allocDescs[0];
+       struct tag              descTag;
+       struct icbtag           icbTag;
+       __le32                  uid;
+       __le32                  gid;
+       __le32                  permissions;
+       __le16                  fileLinkCount;
+       uint8_t                 recordFormat;
+       uint8_t                 recordDisplayAttr;
+       __le32                  recordLength;
+       __le64                  informationLength;
+       __le64                  logicalBlocksRecorded;
+       struct timestamp        accessTime;
+       struct timestamp        modificationTime;
+       struct timestamp        attrTime;
+       __le32                  checkpoint;
+       struct long_ad          extendedAttrICB;
+       struct regid            impIdent;
+       __le64                  uniqueID;
+       __le32                  lengthExtendedAttr;
+       __le32                  lengthAllocDescs;
+       uint8_t                 extendedAttr[0];
+       uint8_t                 allocDescs[0];
 } __attribute__ ((packed));
 
 /* Permissions (ECMA 167r3 4/14.9.5) */
@@ -617,51 +604,51 @@ struct fileEntry {
 
 /* Extended Attribute Header Descriptor (ECMA 167r3 4/14.10.1) */
 struct extendedAttrHeaderDesc {
-       tag descTag;
-       __le32 impAttrLocation;
-       __le32 appAttrLocation;
+       struct tag      descTag;
+       __le32          impAttrLocation;
+       __le32          appAttrLocation;
 } __attribute__ ((packed));
 
 /* Generic Format (ECMA 167r3 4/14.10.2) */
 struct genericFormat {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       uint8_t attrData[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       uint8_t         attrData[0];
 } __attribute__ ((packed));
 
 /* Character Set Information (ECMA 167r3 4/14.10.3) */
 struct charSetInfo {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 escapeSeqLength;
-       uint8_t charSetType;
-       uint8_t escapeSeq[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          escapeSeqLength;
+       uint8_t         charSetType;
+       uint8_t         escapeSeq[0];
 } __attribute__ ((packed));
 
 /* Alternate Permissions (ECMA 167r3 4/14.10.4) */
 struct altPerms {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le16 ownerIdent;
-       __le16 groupIdent;
-       __le16 permission;
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le16          ownerIdent;
+       __le16          groupIdent;
+       __le16          permission;
 } __attribute__ ((packed));
 
 /* File Times Extended Attribute (ECMA 167r3 4/14.10.5) */
 struct fileTimesExtAttr {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 dataLength;
-       __le32 fileTimeExistence;
-       uint8_t fileTimes;
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          dataLength;
+       __le32          fileTimeExistence;
+       uint8_t         fileTimes;
 } __attribute__ ((packed));
 
 /* FileTimeExistence (ECMA 167r3 4/14.10.5.6) */
@@ -672,47 +659,47 @@ struct fileTimesExtAttr {
 
 /* Information Times Extended Attribute (ECMA 167r3 4/14.10.6) */
 struct infoTimesExtAttr {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 dataLength;
-       __le32 infoTimeExistence;
-       uint8_t infoTimes[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          dataLength;
+       __le32          infoTimeExistence;
+       uint8_t         infoTimes[0];
 } __attribute__ ((packed));
 
 /* Device Specification (ECMA 167r3 4/14.10.7) */
 struct deviceSpec {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 impUseLength;
-       __le32 majorDeviceIdent;
-       __le32 minorDeviceIdent;
-       uint8_t impUse[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          impUseLength;
+       __le32          majorDeviceIdent;
+       __le32          minorDeviceIdent;
+       uint8_t         impUse[0];
 } __attribute__ ((packed));
 
 /* Implementation Use Extended Attr (ECMA 167r3 4/14.10.8) */
 struct impUseExtAttr {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 impUseLength;
-       regid impIdent;
-       uint8_t impUse[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          impUseLength;
+       struct regid    impIdent;
+       uint8_t         impUse[0];
 } __attribute__ ((packed));
 
 /* Application Use Extended Attribute (ECMA 167r3 4/14.10.9) */
 struct appUseExtAttr {
-       __le32 attrType;
-       uint8_t attrSubtype;
-       uint8_t reserved[3];
-       __le32 attrLength;
-       __le32 appUseLength;
-       regid appIdent;
-       uint8_t appUse[0];
+       __le32          attrType;
+       uint8_t         attrSubtype;
+       uint8_t         reserved[3];
+       __le32          attrLength;
+       __le32          appUseLength;
+       struct regid    appIdent;
+       uint8_t         appUse[0];
 } __attribute__ ((packed));
 
 #define EXTATTR_CHAR_SET               1
@@ -725,29 +712,29 @@ struct appUseExtAttr {
 
 /* Unallocated Space Entry (ECMA 167r3 4/14.11) */
 struct unallocSpaceEntry {
-       tag descTag;
-       icbtag icbTag;
-       __le32 lengthAllocDescs;
-       uint8_t allocDescs[0];
+       struct tag      descTag;
+       struct icbtag   icbTag;
+       __le32          lengthAllocDescs;
+       uint8_t         allocDescs[0];
 } __attribute__ ((packed));
 
 /* Space Bitmap Descriptor (ECMA 167r3 4/14.12) */
 struct spaceBitmapDesc {
-       tag descTag;
-       __le32 numOfBits;
-       __le32 numOfBytes;
-       uint8_t bitmap[0];
+       struct tag      descTag;
+       __le32          numOfBits;
+       __le32          numOfBytes;
+       uint8_t         bitmap[0];
 } __attribute__ ((packed));
 
 /* Partition Integrity Entry (ECMA 167r3 4/14.13) */
 struct partitionIntegrityEntry {
-       tag descTag;
-       icbtag icbTag;
-       timestamp recordingDateAndTime;
-       uint8_t integrityType;
-       uint8_t reserved[175];
-       regid impIdent;
-       uint8_t impUse[256];
+       struct tag              descTag;
+       struct icbtag           icbTag;
+       struct timestamp        recordingDateAndTime;
+       uint8_t                 integrityType;
+       uint8_t                 reserved[175];
+       struct regid            impIdent;
+       uint8_t                 impUse[256];
 } __attribute__ ((packed));
 
 /* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) */
@@ -764,46 +751,46 @@ struct partitionIntegrityEntry {
 
 /* Logical Volume Header Descriptor (ECMA 167r3 4/14.15) */
 struct logicalVolHeaderDesc {
-       __le64 uniqueID;
-       uint8_t reserved[24];
+       __le64          uniqueID;
+       uint8_t         reserved[24];
 } __attribute__ ((packed));
 
 /* Path Component (ECMA 167r3 4/14.16.1) */
 struct pathComponent {
-       uint8_t componentType;
-       uint8_t lengthComponentIdent;
-       __le16 componentFileVersionNum;
-       dstring componentIdent[0];
+       uint8_t         componentType;
+       uint8_t         lengthComponentIdent;
+       __le16          componentFileVersionNum;
+       dstring         componentIdent[0];
 } __attribute__ ((packed));
 
 /* File Entry (ECMA 167r3 4/14.17) */
 struct extendedFileEntry {
-       tag descTag;
-       icbtag icbTag;
-       __le32 uid;
-       __le32 gid;
-       __le32 permissions;
-       __le16 fileLinkCount;
-       uint8_t recordFormat;
-       uint8_t recordDisplayAttr;
-       __le32 recordLength;
-       __le64 informationLength;
-       __le64 objectSize;
-       __le64 logicalBlocksRecorded;
-       timestamp accessTime;
-       timestamp modificationTime;
-       timestamp createTime;
-       timestamp attrTime;
-       __le32 checkpoint;
-       __le32 reserved;
-       long_ad extendedAttrICB;
-       long_ad streamDirectoryICB;
-       regid impIdent;
-       __le64 uniqueID;
-       __le32 lengthExtendedAttr;
-       __le32 lengthAllocDescs;
-       uint8_t extendedAttr[0];
-       uint8_t allocDescs[0];
-} __attribute__ ((packed));
-
-#endif                         /* _ECMA_167_H */
+       struct tag              descTag;
+       struct icbtag           icbTag;
+       __le32                  uid;
+       __le32                  gid;
+       __le32                  permissions;
+       __le16                  fileLinkCount;
+       uint8_t                 recordFormat;
+       uint8_t                 recordDisplayAttr;
+       __le32                  recordLength;
+       __le64                  informationLength;
+       __le64                  objectSize;
+       __le64                  logicalBlocksRecorded;
+       struct timestamp        accessTime;
+       struct timestamp        modificationTime;
+       struct timestamp        createTime;
+       struct timestamp        attrTime;
+       __le32                  checkpoint;
+       __le32                  reserved;
+       struct long_ad          extendedAttrICB;
+       struct long_ad          streamDirectoryICB;
+       struct regid            impIdent;
+       __le64                  uniqueID;
+       __le32                  lengthExtendedAttr;
+       __le32                  lengthAllocDescs;
+       uint8_t                 extendedAttr[0];
+       uint8_t                 allocDescs[0];
+} __attribute__ ((packed));
+
+#endif /* _ECMA_167_H */