📄 ecma_167.h
字号:
typedef struct { uint32_t extLength; uint32_t recordedLength; uint32_t informationLength; kernel_lb_addr extLocation;} kernel_ext_ad;/* Descriptor Tag (ECMA 167r3 4/7.2 - See 3/7.2) *//* Tag Identifier (ECMA 167r3 4/7.2.1) */#define TAG_IDENT_FSD 0x0100#define TAG_IDENT_FID 0x0101#define TAG_IDENT_AED 0x0102#define TAG_IDENT_IE 0x0103#define TAG_IDENT_TE 0x0104#define TAG_IDENT_FE 0x0105#define TAG_IDENT_EAHD 0x0106#define TAG_IDENT_USE 0x0107#define TAG_IDENT_SBD 0x0108#define TAG_IDENT_PIE 0x0109#define TAG_IDENT_EFE 0x010A/* 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];} __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];} __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];} __attribute__ ((packed));/* File Characteristics (ECMA 167r3 4/14.4.3) */#define FID_FILE_CHAR_HIDDEN 0x01#define FID_FILE_CHAR_DIRECTORY 0x02#define FID_FILE_CHAR_DELETED 0x04#define FID_FILE_CHAR_PARENT 0x08#define FID_FILE_CHAR_METADATA 0x10/* Allocation Ext Descriptor (ECMA 167r3 4/14.5) */struct allocExtDesc { 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;/* Strategy Type (ECMA 167r3 4/14.6.2) */#define ICBTAG_STRATEGY_TYPE_UNDEF 0x0000#define ICBTAG_STRATEGY_TYPE_1 0x0001#define ICBTAG_STRATEGY_TYPE_2 0x0002#define ICBTAG_STRATEGY_TYPE_3 0x0003#define ICBTAG_STRATEGY_TYPE_4 0x0004/* File Type (ECMA 167r3 4/14.6.6) */#define ICBTAG_FILE_TYPE_UNDEF 0x00#define ICBTAG_FILE_TYPE_USE 0x01#define ICBTAG_FILE_TYPE_PIE 0x02#define ICBTAG_FILE_TYPE_IE 0x03#define ICBTAG_FILE_TYPE_DIRECTORY 0x04#define ICBTAG_FILE_TYPE_REGULAR 0x05#define ICBTAG_FILE_TYPE_BLOCK 0x06#define ICBTAG_FILE_TYPE_CHAR 0x07#define ICBTAG_FILE_TYPE_EA 0x08#define ICBTAG_FILE_TYPE_FIFO 0x09#define ICBTAG_FILE_TYPE_SOCKET 0x0A#define ICBTAG_FILE_TYPE_TE 0x0B#define ICBTAG_FILE_TYPE_SYMLINK 0x0C#define ICBTAG_FILE_TYPE_STREAMDIR 0x0D/* Flags (ECMA 167r3 4/14.6.8) */#define ICBTAG_FLAG_AD_MASK 0x0007#define ICBTAG_FLAG_AD_SHORT 0x0000#define ICBTAG_FLAG_AD_LONG 0x0001#define ICBTAG_FLAG_AD_EXTENDED 0x0002#define ICBTAG_FLAG_AD_IN_ICB 0x0003#define ICBTAG_FLAG_SORTED 0x0008#define ICBTAG_FLAG_NONRELOCATABLE 0x0010#define ICBTAG_FLAG_ARCHIVE 0x0020#define ICBTAG_FLAG_SETUID 0x0040#define ICBTAG_FLAG_SETGID 0x0080#define ICBTAG_FLAG_STICKY 0x0100#define ICBTAG_FLAG_CONTIGUOUS 0x0200#define ICBTAG_FLAG_SYSTEM 0x0400#define ICBTAG_FLAG_TRANSFORMED 0x0800#define ICBTAG_FLAG_MULTIVERSIONS 0x1000#define ICBTAG_FLAG_STREAM 0x2000/* Indirect Entry (ECMA 167r3 4/14.7) */struct indirectEntry { tag descTag; icbtag icbTag; long_ad indirectICB;} __attribute__ ((packed));/* Terminal Entry (ECMA 167r3 4/14.8) */struct terminalEntry { tag descTag; 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];} __attribute__ ((packed));/* Permissions (ECMA 167r3 4/14.9.5) */#define FE_PERM_O_EXEC 0x00000001U#define FE_PERM_O_WRITE 0x00000002U#define FE_PERM_O_READ 0x00000004U#define FE_PERM_O_CHATTR 0x00000008U#define FE_PERM_O_DELETE 0x00000010U#define FE_PERM_G_EXEC 0x00000020U#define FE_PERM_G_WRITE 0x00000040U#define FE_PERM_G_READ 0x00000080U#define FE_PERM_G_CHATTR 0x00000100U#define FE_PERM_G_DELETE 0x00000200U#define FE_PERM_U_EXEC 0x00000400U#define FE_PERM_U_WRITE 0x00000800U#define FE_PERM_U_READ 0x00001000U#define FE_PERM_U_CHATTR 0x00002000U#define FE_PERM_U_DELETE 0x00004000U/* Record Format (ECMA 167r3 4/14.9.7) */#define FE_RECORD_FMT_UNDEF 0x00#define FE_RECORD_FMT_FIXED_PAD 0x01#define FE_RECORD_FMT_FIXED 0x02#define FE_RECORD_FMT_VARIABLE8 0x03#define FE_RECORD_FMT_VARIABLE16 0x04#define FE_RECORD_FMT_VARIABLE16_MSB 0x05#define FE_RECORD_FMT_VARIABLE32 0x06#define FE_RECORD_FMT_PRINT 0x07#define FE_RECORD_FMT_LF 0x08#define FE_RECORD_FMT_CR 0x09#define FE_RECORD_FMT_CRLF 0x0A#define FE_RECORD_FMT_LFCR 0x0B/* Record Display Attributes (ECMA 167r3 4/14.9.8) */#define FE_RECORD_DISPLAY_ATTR_UNDEF 0x00#define FE_RECORD_DISPLAY_ATTR_1 0x01#define FE_RECORD_DISPLAY_ATTR_2 0x02#define FE_RECORD_DISPLAY_ATTR_3 0x03/* Extended Attribute Header Descriptor (ECMA 167r3 4/14.10.1) */struct extendedAttrHeaderDesc { 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];} __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];} __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;} __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;} __attribute__ ((packed));/* FileTimeExistence (ECMA 167r3 4/14.10.5.6) */#define FTE_CREATION 0x00000001#define FTE_DELETION 0x00000004#define FTE_EFFECTIVE 0x00000008#define FTE_BACKUP 0x00000002/* 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];} __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];} __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];} __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];} __attribute__ ((packed));#define EXTATTR_CHAR_SET 1#define EXTATTR_ALT_PERMS 3#define EXTATTR_FILE_TIMES 5#define EXTATTR_INFO_TIMES 6#define EXTATTR_DEV_SPEC 12#define EXTATTR_IMP_USE 2048#define EXTATTR_APP_USE 65536/* Unallocated Space Entry (ECMA 167r3 4/14.11) */struct unallocSpaceEntry { tag descTag; 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];} __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];} __attribute__ ((packed));/* Short Allocation Descriptor (ECMA 167r3 4/14.14.1) *//* Extent Length (ECMA 167r3 4/14.14.1.1) */#define EXT_RECORDED_ALLOCATED 0x00000000#define EXT_NOT_RECORDED_ALLOCATED 0x40000000#define EXT_NOT_RECORDED_NOT_ALLOCATED 0x80000000#define EXT_NEXT_EXTENT_ALLOCDECS 0xC0000000/* Long Allocation Descriptor (ECMA 167r3 4/14.14.2) *//* Extended Allocation Descriptor (ECMA 167r3 4/14.14.3) *//* Logical Volume Header Descriptor (ECMA 167r3 4/14.15) */struct logicalVolHeaderDesc { __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];} __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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -