extra.fld

来自「infozip2.2源码」· FLD 代码 · 共 677 行 · 第 1/2 页

FLD
677
字号
The following are the known types of zipfile extra fields as of thiswriting.  Extra fields are documented in PKWARE's appnote.txt and areintended to allow for backward- and forward-compatible extensions tothe zipfile format.  Multiple extra-field types may be chained together,provided that the total length of all extra-field data is less than 64KB.(In fact, PKWARE requires that the total length of the entire file header,including timestamp, file attributes, filename, comment, extra field, etc.,be no more than 64KB.)Each extra-field type (or subblock) must contain a four-byte header con-sisting of a two-byte header ID and a two-byte length (little-endian) forthe remaining data in the subblock.  If there are additional subblockswithin the extra field, the header for each one will appear immediately following the data for the previous subblock (i.e., with no padding foralignment).All integer fields in the descriptions below are in little-endian (Intel)format unless otherwise specified.  Note that "Short" means two bytes and"Long" means four bytes, regardless of their native sizes.Greg Roelofs, 970531			-------------------------The current list of Header IDs is as follows (0-31 are reserved by PKWARE):	  0x0007        AV Info	  0x0009        OS/2 extended attributes	  0x000c        PKWARE VAX/VMS	  0x000d        reserved for Unix	  0x07c8        Info-ZIP Macintosh	  0x2605        ZipIt Macintosh	  0x4341        Acorn/SparkFS (David Pilling)	  0x4453	Windows NT security descriptor (binary ACL)	  0x4704        VM/CMS	  0x470f        MVS	  0x4b46        FWKCS MD5 (third party, see below)	  0x4c41        OS/2 access control list (text ACL)	  0x4d49        Info-ZIP VMS (VAX or Alpha)	  0x5356        AOS/VS (binary ACL)	  0x5455        extended timestamp	  0x5855        Info-ZIP Unix (original; also OS/2, NT, etc.)	  0x6542        BeOS (BeBox, PowerMac, etc.)	  0x756e        ASi Unix	  0x7855        Info-ZIP Unix (new)	  0xfb4a        SMS/QDOSThe following are detailed descriptions of the known extra-field block types:	 -OS/2 Extended Attributes Extra Field:	  ====================================	  The following is the layout of the OS/2 extended attributes "extra"	  block.  (Last Revision 960922)	  Note: all fields stored in Intel low-byte/high-byte order.	  Local-header version:	  Value		Size		Description	  -----		----		-----------  (OS/2)  0x0009	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		uncompressed EA data size	  CType		Short		compression type	  EACRC		Long		CRC value for uncompressed EA data	  (var.)	variable	compressed EA data	  Central-header version:	  Value		Size		Description	  -----		----		-----------  (OS/2)  0x0009	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		size of uncompressed local EA data	  The value of CType is interpreted according to the "compression	  method" section above; i.e., 0 for stored, 8 for deflated, etc.	  The OS/2 extended attribute structure (FEA2LIST) is compressed and	  then stored in its entirety within this structure.  There will only	  ever be one block of data in the variable-length field.	 -OS/2 Access Control List Extra Field:	  ====================================	  The following is the layout of the OS/2 ACL extra block.	  (Last Revision 960922)	  Local-header version:	  Value		Size		Description	  -----		----		-----------  (ACL)   0x4c41	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		uncompressed ACL data size	  CType		Short		compression type	  EACRC		Long		CRC value for uncompressed ACL data	  (var.)	variable	compressed ACL data	  Central-header version:	  Value		Size		Description	  -----		----		-----------  (ACL)   0x4c41	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		size of uncompressed local ACL data	  The value of CType is interpreted according to the "compression	  method" section above; i.e., 0 for stored, 8 for deflated, etc.	  The uncompressed ACL data consist of a text header of the form	  "ACL1:%hX,%hd\n", where the first field is the OS/2 ACCINFO acc_attr	  member and the second is acc_count, followed by acc_count strings	  of the form "%s,%hx\n", where the first field is acl_ugname (user	  group name) and the second acl_access.  This block type will be	  extended for other operating systems as needed.	 -Windows NT Security Descriptor Extra Field:	  ==========================================	  The following is the layout of the NT Security Descriptor (another	  type of ACL) extra block.  (Last Revision 960922)	  Local-header version:	  Value		Size		Description	  -----		----		-----------  (SD)    0x4453	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		uncompressed SD data size	  Version	Byte		version of uncompressed SD data format	  CType		Short		compression type	  EACRC		Long		CRC value for uncompressed SD data	  (var.)	variable	compressed SD data	  Central-header version:	  Value		Size		Description	  -----		----		-----------  (SD)    0x4453	Short		tag for this extra block type	  TSize		Short		total data size for this block	  BSize		Long		size of uncompressed local SD data	  Version	Byte		version of uncompressed SD data format	  The value of CType is interpreted according to the "compression	  method" section above; i.e., 0 for stored, 8 for deflated, etc.	  Version specifies how the compressed data are to be interpreted	  and allows for future expansion of this extra field type.  Currently	  only version 0 is defined.	  For version 0, the compressed data are to be interpreted as a single	  valid Windows NT SECURITY_DESCRIPTOR data structure, in self-relative	  format.	 -PKWARE VAX/VMS Extra Field:	  ==========================	  The following is the layout of PKWARE's VAX/VMS attributes "extra"	  block.  (Last Revision 12/17/91)	  Note: all fields stored in Intel low-byte/high-byte order.	  Value		Size		Description	  -----		----		-----------  (VMS)   0x000c        Short           Tag for this "extra" block type	  TSize         Short           Total Data Size for this block	  CRC           Long            32-bit CRC for remainder of the block	  Tag1          Short           VMS attribute tag value #1	  Size1         Short           Size of attribute #1, in bytes	  (var.)        Size1           Attribute #1 data	  .	  .	  .	  TagN          Short           VMS attribute tage value #N	  SizeN         Short           Size of attribute #N, in bytes	  (var.)        SizeN           Attribute #N data	  Rules:	  1. There will be one or more of attributes present, which will	     each be preceded by the above TagX & SizeX values.  These	     values are identical to the ATR$C_XXXX and ATR$S_XXXX constants	     which are defined in ATR.H under VMS C.  Neither of these values	     will ever be zero.	  2. No word alignment or padding is performed.	  3. A well-behaved PKZIP/VMS program should never produce more than	     one sub-block with the same TagX value.  Also, there will never	     be more than one "extra" block of type 0x000c in a particular	     directory record.	 -Info-ZIP VMS Extra Field:	  ========================	  The following is the layout of Info-ZIP's VMS attributes extra	  block for VAX or Alpha AXP.  The local-header and central-header	  versions are identical.  (Last Revision 960922)	  Value		Size		Description	  -----		----		-----------  (VMS2)  0x4d49	Short		tag for this extra block type	  TSize		Short		total data size for this block	  ID		Long		block ID	  Flags		Short		info bytes	  BSize		Short		uncompressed block size	  Reserved	Long		(reserved)	  (var.)	variable	compressed VMS file-attributes block	  The block ID is one of the following unterminated strings:		"VFAB"		struct FAB		"VALL"		struct XABALL		"VFHC"		struct XABFHC		"VDAT"		struct XABDAT		"VRDT"		struct XABRDT		"VPRO"		struct XABPRO		"VKEY"		struct XABKEY		"VMSV"		version (e.g., "V6.1"; truncated at hyphen)		"VNAM"		reserved	  The lower three bits of Flags indicate the compression method.  The	  currently defined methods are:		0	stored (not compressed)		1	simple "RLE"		2	deflated	  The "RLE" method simply replaces zero-valued bytes with zero-valued	  bits and non-zero-valued bytes with a "1" bit followed by the byte	  value.	  The variable-length compressed data contains only the data corre-	  sponding to the indicated structure or string.  Typically multiple	  VMS2 extra fields are present (each with a unique block type).	 -Info-ZIP Macintosh Extra Field:	  ==============================	  The following is the layout of the (old) Info-ZIP resource-fork extra	  block for Macintosh.  The local-header and central-header versions	  are identical.  (Last Revision 960922)	  Value		Size		Description	  -----		----		-----------  (Mac)   0x07c8	Short		tag for this extra block type	  TSize		Short		total data size for this block	  "JLEE"	beLong		extra-field signature	  FInfo		16 bytes	Macintosh FInfo structure	  CrDat		beLong		HParamBlockRec fileParam.ioFlCrDat	  MdDat		beLong		HParamBlockRec fileParam.ioFlMdDat	  Flags		beLong		info bits	  DirID		beLong		HParamBlockRec fileParam.ioDirID	  VolName	28 bytes	volume name (optional)	  All fields but the first two are in native Macintosh format	  (big-endian Motorola order, not little-endian Intel).  The least	  significant bit of Flags is 1 if the file is a data fork, 0 other-	  wise.  In addition, if this extra field is present, the filename	  has an extra 'd' or 'r' appended to indicate data fork or resource	  fork.  The 28-byte VolName field may be omitted.	 -ZipIt Macintosh Extra Field:	  ===========================	  The following is the layout of the ZipIt extra block for Macintosh.	  The local-header and central-header versions are identical.	  (Last Revision 970130)	  Value		Size		Description	  -----		----		-----------  (Mac2)  0x2605	Short		tag for this extra block type	  TSize		Short		total data size for this block	  "ZPIT"	beLong		extra-field signature	  FnLen		Byte		length of FileName	  FileName	variable	full Macintosh filename	  FileType	beLong		four-byte Mac file type string	  Creator	beLong		four-byte Mac creator string	 -Acorn SparkFS Extra Field:	  =========================	  The following is the layout of David Pilling's SparkFS extra block	  for Acorn RISC OS.  The local-header and central-header versions are	  identical.  (Last Revision 960922)	  Value		Size		Description	  -----		----		-----------  (Acorn) 0x4341	Short		tag for this extra block type	  TSize		Short		total data size for this block	  "ARC0"	Long		extra-field signature	  LoadAddr	Long		load address or file type	  ExecAddr	Long		exec address	  Attr		Long		file permissions	  Zero		Long		reserved; always zero	  The following bits of Attr are associated with the given file	  permissions:		bit 0		user-writable ('W')		bit 1		user-readable ('R')		bit 2		reserved		bit 3		locked ('L')		bit 4		publicly writable ('w')		bit 5		publicly readable ('r')		bit 6		reserved		bit 7		reserved	 -VM/CMS Extra Field:	  ==================	  The following is the layout of the file-attributes extra block for	  VM/CMS.  The local-header and central-header versions are	  identical.  (Last Revision 960922)	  Value		Size		Description	  -----		----		----------- (VM/CMS) 0x4704	Short		tag for this extra block type	  TSize		Short		total data size for this block	  flData	variable	file attributes data	  flData is an uncompressed fldata_t struct.	 -MVS Extra Field:	  ===============	  The following is the layout of the file-attributes extra block for	  MVS.  The local-header and central-header versions are identical.	  (Last Revision 960922)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?