📄 ecma_167.h
字号:
#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; uint16_t interchangeLvl; uint16_t maxInterchangeLvl; uint32_t charSetList; uint32_t maxCharSetList; uint32_t fileSetNum; uint32_t 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; uint16_t fileVersionNum; uint8_t fileCharacteristics; uint8_t lengthFileIdent; long_ad icb; uint16_t 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; uint32_t previousAllocExtLocation; uint32_t lengthAllocDescs;} __attribute__ ((packed));/* ICB Tag (ECMA 167r3 4/14.6) */typedef struct{ uint32_t priorRecordedNumDirectEntries; uint16_t strategyType; uint16_t strategyParameter; uint16_t numEntries; uint8_t reserved; uint8_t fileType; lb_addr parentICBLocation; uint16_t 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; uint32_t uid; uint32_t gid; uint32_t permissions; uint16_t fileLinkCount; uint8_t recordFormat; uint8_t recordDisplayAttr; uint32_t recordLength; uint64_t informationLength; uint64_t logicalBlocksRecorded; timestamp accessTime; timestamp modificationTime; timestamp attrTime; uint32_t checkpoint; long_ad extendedAttrICB; regid impIdent; uint64_t uniqueID; uint32_t lengthExtendedAttr; uint32_t 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; uint32_t impAttrLocation; uint32_t appAttrLocation;} __attribute__ ((packed));/* Generic Format (ECMA 167r3 4/14.10.2) */struct genericFormat{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint8_t attrData[0];} __attribute__ ((packed));/* Character Set Information (ECMA 167r3 4/14.10.3) */struct charSetInfo{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t escapeSeqLength; uint8_t charSetType; uint8_t escapeSeq[0];} __attribute__ ((packed));/* Alternate Permissions (ECMA 167r3 4/14.10.4) */struct altPerms{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint16_t ownerIdent; uint16_t groupIdent; uint16_t permission;} __attribute__ ((packed));/* File Times Extended Attribute (ECMA 167r3 4/14.10.5) */struct fileTimesExtAttr{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t dataLength; uint32_t 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{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t dataLength; uint32_t infoTimeExistence; uint8_t infoTimes[0];} __attribute__ ((packed));/* Device Specification (ECMA 167r3 4/14.10.7) */struct deviceSpec{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t impUseLength; uint32_t majorDeviceIdent; uint32_t minorDeviceIdent; uint8_t impUse[0];} __attribute__ ((packed));/* Implementation Use Extended Attr (ECMA 167r3 4/14.10.8) */struct impUseExtAttr{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t impUseLength; regid impIdent; uint8_t impUse[0];} __attribute__ ((packed));/* Application Use Extended Attribute (ECMA 167r3 4/14.10.9) */struct appUseExtAttr{ uint32_t attrType; uint8_t attrSubtype; uint8_t reserved[3]; uint32_t attrLength; uint32_t 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; uint32_t lengthAllocDescs; uint8_t allocDescs[0];} __attribute__ ((packed));/* Space Bitmap Descriptor (ECMA 167r3 4/14.12) */struct spaceBitmapDesc{ tag descTag; uint32_t numOfBits; uint32_t 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{ uint64_t uniqueID; uint8_t reserved[24];} __attribute__ ((packed));/* Path Component (ECMA 167r3 4/14.16.1) */struct pathComponent{ uint8_t componentType; uint8_t lengthComponentIdent; uint16_t componentFileVersionNum; dstring componentIdent[0];} __attribute__ ((packed));/* File Entry (ECMA 167r3 4/14.17) */struct extendedFileEntry{ tag descTag; icbtag icbTag; uint32_t uid; uint32_t gid; uint32_t permissions; uint16_t fileLinkCount; uint8_t recordFormat; uint8_t recordDisplayAttr; uint32_t recordLength; uint64_t informationLength; uint64_t objectSize; uint64_t logicalBlocksRecorded; timestamp accessTime; timestamp modificationTime; timestamp createTime; timestamp attrTime; uint32_t checkpoint; uint32_t reserved; long_ad extendedAttrICB; long_ad streamDirectoryICB; regid impIdent; uint64_t uniqueID; uint32_t lengthExtendedAttr; uint32_t 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 + -