⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecma_167.h

📁 这是Linux系统下的对UDF文件系统新增的功能
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -