📄 ecma_167.h
字号:
Uint32 integrityType;
extent_ad nextIntegrityExt;
Uchar logicalVolContentsUse[32];
Uint32 numOfPartitions;
Uint32 lengthOfImpUse;
Uint32 freeSpaceTable[2];
Uint32 sizeTable[2];
Uchar impUse[46];
} logicalVolIntegrityDesc;
/* Integrity Type (ECMA 167r3 3/10.10.3) */
#define LVID_INTEGRITY_TYPE_OPEN 0x00000000
#define LVID_INTEGRITY_TYPE_CLOSE 0x00000001
/* 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) */
typedef struct
{
tag descTag;
timestamp recordingDateAndTime;
Uint16 interchangeLvl;
Uint16 maxInterchangeLvl;
Uint32 charSetList;
Uint32 maxCharSetList;
Uint32 fileSetNum;
Uint32 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;
Uchar reserved[32];
} fileSetDesc;
/* Partition Header Descriptor (ECMA 167r3 4/14.3) */
typedef struct
{
short_ad unallocSpaceTable;
short_ad unallocSpaceBitmap;
short_ad partitionIntegrityTable;
short_ad freedSpaceTable;
short_ad freedSpaceBitmap;
Uchar reserved[88];
} partitionHeaderDesc;
/* File Identifier Descriptor (ECMA 167r3 4/14.4) */
typedef struct
{
tag descTag;
Uint16 fileVersionNum;
Uchar fileCharacteristics;
Uchar lengthFileIdent;
long_ad icb;
Uint16 lengthOfImpUse;
Uchar other[130];
} fileIdentDesc;
/* 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) */
typedef struct
{
tag descTag;
Uint32 previousAllocExtLocation;
Uint32 lengthAllocDescs;
} allocExtDesc;
/* ICB Tag (ECMA 167r3 4/14.6) */
typedef struct
{
Uint32 priorRecordedNumDirectEntries;
Uint16 strategyType;
Uint16 strategyParameter;
Uint16 numEntries;
Uchar reserved;
Uchar fileType;
lb_addr parentICBLocation;
Uint16 flags;
}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) */
typedef struct
{
tag descTag;
icbtag icbTag;
long_ad indirectICB;
} indirectEntry;
/* Terminal Entry (ECMA 167r3 4/14.8) */
typedef struct
{
tag descTag;
icbtag icbTag;
} terminalEntry;
/* File Entry (ECMA 167r3 4/14.9) */
typedef struct
{
tag descTag;
icbtag icbTag;
Uint32 uid;
Uint32 gid;
Uint32 permissions;
Uint16 fileLinkCount;
Uchar recordFormat;
Uchar recordDisplayAttr;
Uint32 recordLength;
Uint64 informationLength;
Uint64 logicalBlocksRecorded;
timestamp accessTime;
timestamp modificationTime;
timestamp attrTime;
Uint32 checkpoint;
long_ad extendedAttrICB;
regid impIdent;
Uint64 uniqueID;
Uint32 lengthExtendedAttr;
Uint32 lengthAllocDescs;
Uchar other[2048-176];
} fileEntry;
/* 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
#define 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) */
typedef struct
{
tag descTag;
Uint32 impAttrLocation;
Uint32 appAttrLocation;
} extendedAttrHeaderDesc;
/* Generic Format (ECMA 167r3 4/14.10.2) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uchar attrData1stByte;
} genericFormat;
typedef struct
{
extendedAttrHeaderDesc header;
genericFormat content;
} extenedAttributes;
/* Character Set Information (ECMA 167r3 4/14.10.3) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 escapeSeqLength;
Uchar charSetType;
Uchar escapeSeq1stByte;
} charSetInfo;
/* Alternate Permissions (ECMA 167r3 4/14.10.4) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint16 ownerIdent;
Uint16 groupIdent;
Uint16 permission;
} altPerms;
/* File Times Extended Attribute (ECMA 167r3 4/14.10.5) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 dataLength;
Uint32 fileTimeExistence;
timestamp fileTimes;
} fileTimesExtAttr;
/* 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) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 dataLength;
Uint32 infoTimeExistence;
Uchar infoTimes1stByte;
} infoTimesExtAttr;
/* Device Specification (ECMA 167r3 4/14.10.7) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 impUseLength;
Uint32 majorDeviceIdent;
Uint32 minorDeviceIdent;
Uchar impUse1stByte;
} deviceSpec;
/* Implementation Use Extended Attr (ECMA 167r3 4/14.10.8) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 impUseLength;
regid impIdent;
Uchar impUse1stByte;
} impUseExtAttr;
/* Application Use Extended Attribute (ECMA 167r3 4/14.10.9) */
typedef struct
{
Uint32 attrType;
Uchar attrSubtype;
Uchar reserved[3];
Uint32 attrLength;
Uint32 appUseLength;
regid appIdent;
Uchar appUse1stByte;
} appUseExtAttr;
#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) */
typedef struct
{
tag descTag;
icbtag icbTag;
Uint32 lengthAllocDescs;
Uchar allocDescs1stByte;
} unallocSpaceEntry;
/* Space Bitmap Descriptor (ECMA 167r3 4/14.12) */
typedef struct
{
tag descTag;
Uint32 numOfBits;
Uint32 numOfBytes;
Uchar bitmap1stByte;
} spaceBitmapDesc;
/* Partition Integrity Entry (ECMA 167r3 4/14.13) */
typedef struct
{
tag descTag;
icbtag icbTag;
timestamp recordingDateAndTime;
Uchar integrityType;
Uchar reserved[175];
regid impIdent;
Uchar impUse[256];
} partitionIntegrityEntry;
/* 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) */
typedef struct
{
Uint64 uniqueID;
Uchar reserved[24];
} logicalVolHeaderDesc;
/* Path Component (ECMA 167r3 4/14.16.1) */
typedef struct
{
Uchar componentType;
Uchar lengthComponentIdent;
Uint16 componentFileVersionNum;
dstring componentIdent1stByte;
} pathComponent;
/* File Entry (ECMA 167r3 4/14.17) */
typedef struct
{
tag descTag;
icbtag icbTag;
Uint32 uid;
Uint32 gid;
Uint32 permissions;
Uint16 fileLinkCount;
Uchar recordFormat;
Uchar recordDisplayAttr;
Uint32 recordLength;
Uint64 informationLength;
Uint64 objectSize;
Uint64 logicalBlocksRecorded;
timestamp accessTime;
timestamp modificationTime;
timestamp createTime;
timestamp attrTime;
Uint32 checkpoint;
Uint32 reserved;
long_ad extendedAttrICB;
long_ad streamDirectoryICB;
regid impIdent;
Uint64 uniqueID;
Uint32 lengthExtendedAttr;
Uint32 lengthAllocDescs;
Uchar extendedAttr1stByte;
} extendedFileEntry;
#endif /* _ECMA_167_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -