extra.fld
资源名称:unzip540.zip [点击查看]
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:42k
源码类别:
压缩解压
开发平台:
MultiPlatform
- The following are the known types of zipfile extra fields as of this
- writing. Extra fields are documented in PKWARE's appnote.txt and are
- intended to allow for backward- and forward-compatible extensions to
- the 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) for
- the remaining data in the subblock. If there are additional subblocks
- within the extra field, the header for each one will appear immediately
- following the data for the previous subblock (i.e., with no padding for
- alignment).
- All integer fields in the descriptions below are in little-endian (Intel)
- format unless otherwise specified. Note that "Short" means two bytes,
- "Long" means four bytes, and "Long-Long" means eight bytes, regardless
- of their native sizes. Unless specifically noted, all integer fields should
- be interpreted as unsigned (non-negative) numbers.
- Christian Spieler, 19980918
- -------------------------
- Header ID's of 0 thru 31 are reserved for use by PKWARE.
- The remaining ID's can be used by third party vendors for
- proprietary usage.
- The current Header ID mappings defined by PKWARE are:
- 0x0007 AV Info
- 0x0009 OS/2 extended attributes (also Info-ZIP)
- 0x000a PKWARE Win95/WinNT FileTimes [undocumented!]
- 0x000c PKWARE VAX/VMS (also Info-ZIP)
- 0x000d PKWARE Unix
- 0x000f Patch Descriptor
- The Header ID mappings defined by Info-ZIP and third parties are:
- 0x07c8 Info-ZIP Macintosh (old, J. Lee)
- 0x2605 ZipIt Macintosh (first version)
- 0x2705 ZipIt Macintosh v 1.3.5 and newer (w/o full filename)
- 0x334d Info-ZIP Macintosh (new, D. Haase's 'Mac3' field )
- 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/QDOS
- The 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 19960922)
- 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 19960922)
- 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,%hdn", 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,%hxn", 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 19960922)
- 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
- 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 Win95/WinNT Extra Field:
- ==============================
- The following description covers PKWARE's undocumented
- Windows 95 & Windows NT extra field, introduced with the
- release of PKZIP for Windows 2.50. (Last Revision 19980425)
- This field has a fixed data size of 32 bytes and is only stored
- as local extra field.
- Value Size Description
- ----- ---- -----------
- (WinNT) 0x000a Short Tag for this "extra" block type
- TSize Short Total Data Size for this block
- Unknwn1 Long ???? (all 0 ?)
- Unknwn2 Long ????
- ModTime Long-Long 64-bit NTFS last-modified filetime
- AccTime Long-Long 64-bit NTFS last-access filetime
- CreTime Long-Long 64-bit NTFS creation filetime
- The NTFS filetimes are 64-bit unsigned integers, stored in Intel
- (least significant byte first) byte order. They determine the
- number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch",
- which is "01-Jan-1601 00:00:00 UTC".
- -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 19960922)
- 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 19960922)
- 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 (long):
- ==================================
- The following is the layout of the ZipIt extra block for Macintosh.
- The local-header and central-header versions are identical.
- (Last Revision 19970130)
- 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 Byte[4] four-byte Mac file type string
- Creator Byte[4] four-byte Mac creator string
- -ZipIt Macintosh Extra Field (short):
- ===================================
- The following is the layout of a shortened variant of the
- ZipIt extra block for Macintosh (without "full name" entry).
- This variant is used by ZipIt 1.3.5 and newer for entries that
- do not need a "full Mac filename" record.
- The local-header and central-header versions are identical.
- (Last Revision 19980903)
- Value Size Description
- ----- ---- -----------
- (Mac2b) 0x2705 Short tag for this extra block type
- TSize Short total data size for this block
- "ZPIT" beLong extra-field signature
- FileType Byte[4] four-byte Mac file type string
- Creator Byte[4] four-byte Mac creator string
- -Info-ZIP Macintosh Extra Field (new):
- ====================================
- The following is the layout of the (new) Info-ZIP extra
- block for Macintosh, designed by Dirk Haase.
- All values are in little-endian.
- (Last Revision 19981005)
- Local-header version:
- Value Size Description
- ----- ---- -----------
- (Mac3) 0x334d Short tag for this extra block type ("M3")
- TSize Short total data size for this block
- BSize Long uncompressed finder attribute data size
- Flags Short info bits
- fdType Byte[4] Type of the File (4-byte string)
- fdCreator Byte[4] Creator of the File (4-byte string)
- (CType) Short compression type
- (CRC) Long CRC value for uncompressed MacOS data
- Attribs variable finder attribute data (see below)
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (Mac3) 0x334d Short tag for this extra block type ("M3")
- TSize Short total data size for this block
- BSize Long uncompressed finder attribute data size
- Flags Short info bits
- fdType Byte[4] Type of the File (4-byte string)
- fdCreator Byte[4] Creator of the File (4-byte string)
- The third bit of Flags in both headers indicates whether
- the LOCAL extra field is uncompressed (and therefore whether CType
- and CRC are omitted):
- Bits of the Flags:
- bit 0 if set, file is a data fork; otherwise unset
- bit 1 if set, filename will be not changed
- bit 2 if set, Attribs is uncompressed (no CType, CRC)
- bit 3 if set, date and times are in 64 bit
- if zero date and times are in 32 bit.
- bit 4 if set, timezone offsets fields for the native
- Mac times are omitted (UTC support deactivated)
- bits 5-15 reserved;
- Attributes:
- Attribs is a Mac-specific block of data in little-endian format with
- the following structure (if compressed, uncompress it first):
- Value Size Description
- ----- ---- -----------
- fdFlags Short Finder Flags
- fdLocation.v Short Finder Icon Location
- fdLocation.h Short Finder Icon Location
- fdFldr Short Folder containing file
- FXInfo 16 bytes Macintosh FXInfo structure
- FXInfo-Structure:
- fdIconID Short
- fdUnused[3] Short unused but reserved 6 bytes
- fdScript Byte Script flag and number
- fdXFlags Byte More flag bits
- fdComment Short Comment ID
- fdPutAway Long Home Dir ID
- FVersNum Byte file version number
- may be not used by MacOS
- ACUser Byte directory access rights
- FlCrDat ULong date and time of creation
- FlMdDat ULong date and time of last modification
- FlBkDat ULong date and time of last backup
- These time numbers are original Mac FileTime values (local time!).
- Currently, date-time width is 32-bit, but future version may
- support be 64-bit times (see flags)
- CrGMTOffs Long(signed!) difference "local Creat. time - UTC"
- MdGMTOffs Long(signed!) difference "local Modif. time - UTC"
- BkGMTOffs Long(signed!) difference "local Backup time - UTC"
- These "local time - UTC" differences (stored in seconds) may be
- used to support timestamp adjustment after inter-timezone transfer.
- These fields are optional; bit 4 of the flags word controls their
- presence.
- Charset Short TextEncodingBase (Charset)
- valid for the following two fields
- FullPath variable Path of the current file.
- Zero terminated string (C-String)
- Currently coded in the native Charset.
- Comment variable Finder Comment of the current file.
- Zero terminated string (C-String)
- Currently coded in the native Charset.
- -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 19960922)
- 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 19960922)
- 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 19960922)
- Value Size Description
- ----- ---- -----------
- (MVS) 0x470f 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.
- -PKWARE Unix Extra Field:
- ========================
- The following is the layout of PKWARE's Unix "extra" block.
- It was introduced with the release of PKZIP for Unix 2.50.
- Note: all fields are stored in Intel low-byte/high-byte order.
- (Last Revision 19980901)
- This field has a minimum data size of 12 bytes and is only stored
- as local extra field.
- Value Size Description
- ----- ---- -----------
- (Unix0) 0x000d Short Tag for this "extra" block type
- TSize Short Total Data Size for this block
- AcTime Long time of last access (UTC/GMT)
- ModTime Long time of last modification (UTC/GMT)
- UID Short Unix user ID
- GID Short Unix group ID
- (var) variable Variable length data field
- The variable length data field will contain file type
- specific data. Currently the only values allowed are
- the original "linked to" file names for hard or symbolic links.
- The fixed part of this field has the same layout as Info-ZIP's
- abandoned "Unix1 timestamps & owner ID info" extra field;
- only the two tag bytes are different.
- -PATCH Descriptor Extra Field:
- ============================
- The following is the layout of the Patch Descriptor "extra"
- block.
- Note: all fields stored in Intel low-byte/high-byte order.
- Value Size Description
- ----- ---- -----------
- (Patch) 0x000f Short Tag for this "extra" block type
- TSize Short Size of the total "extra" block
- Version Short Version of the descriptor
- Flags Long Actions and reactions (see below)
- OldSize Long Size of the file about to be patched
- OldCRC Long 32-bit CRC of the file about to be patched
- NewSize Long Size of the resulting file
- NewCRC Long 32-bit CRC of the resulting file
- Actions and reactions
- Bits Description
- ---- ----------------
- 0 Use for autodetection
- 1 Treat as selfpatch
- 2-3 RESERVED
- 4-5 Action (see below)
- 6-7 RESERVED
- 8-9 Reaction (see below) to absent file
- 10-11 Reaction (see below) to newer file
- 12-13 Reaction (see below) to unknown file
- 14-15 RESERVED
- 16-31 RESERVED
- Actions
- Action Value
- ------ -----
- none 0
- add 1
- delete 2
- patch 3
- Reactions
- Reaction Value
- -------- -----
- ask 0
- skip 1
- ignore 2
- fail 3
- -Extended Timestamp Extra Field:
- ==============================
- The following is the layout of the extended-timestamp extra block.
- (Last Revision 19970118)
- Local-header version:
- Value Size Description
- ----- ---- -----------
- (time) 0x5455 Short tag for this extra block type
- TSize Short total data size for this block
- Flags Byte info bits
- (ModTime) Long time of last modification (UTC/GMT)
- (AcTime) Long time of last access (UTC/GMT)
- (CrTime) Long time of original creation (UTC/GMT)
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (time) 0x5455 Short tag for this extra block type
- TSize Short total data size for this block
- Flags Byte info bits (refers to local header!)
- (ModTime) Long time of last modification (UTC/GMT)
- The central-header extra field contains the modification time only,
- or no timestamp at all. TSize is used to flag its presence or
- absence. But note:
- If "Flags" indicates that Modtime is present in the local header
- field, it MUST be present in the central header field, too!
- This correspondence is required because the modification time
- value may be used to support trans-timezone freshening and
- updating operations with zip archives.
- The time values are in standard Unix signed-long format, indicating
- the number of seconds since 1 January 1970 00:00:00. The times
- are relative to Coordinated Universal Time (UTC), also sometimes
- referred to as Greenwich Mean Time (GMT). To convert to local time,
- the software must know the local timezone offset from UTC/GMT.
- The lower three bits of Flags in both headers indicate which time-
- stamps are present in the LOCAL extra field:
- bit 0 if set, modification time is present
- bit 1 if set, access time is present
- bit 2 if set, creation time is present
- bits 3-7 reserved for additional timestamps; not set
- Those times that are present will appear in the order indicated, but
- any combination of times may be omitted. (Creation time may be
- present without access time, for example.) TSize should equal
- (1 + 4*(number of set bits in Flags)), as the block is currently
- defined. Other timestamps may be added in the future.
- -Info-ZIP Unix Extra Field (type 1):
- ==================================
- The following is the layout of the old Info-ZIP extra block for
- Unix. It has been replaced by the extended-timestamp extra block
- (0x5455) and the Unix type 2 extra block (0x7855).
- (Last Revision 19970118)
- Local-header version:
- Value Size Description
- ----- ---- -----------
- (Unix1) 0x5855 Short tag for this extra block type
- TSize Short total data size for this block
- AcTime Long time of last access (UTC/GMT)
- ModTime Long time of last modification (UTC/GMT)
- UID Short Unix user ID
- GID Short Unix group ID
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (Unix1) 0x5855 Short tag for this extra block type
- TSize Short total data size for this block
- AcTime Long time of last access (GMT/UTC)
- ModTime Long time of last modification (GMT/UTC)
- The file access and modification times are in standard Unix signed-
- long format, indicating the number of seconds since 1 January 1970
- 00:00:00. The times are relative to Coordinated Universal Time
- (UTC), also sometimes referred to as Greenwich Mean Time (GMT). To
- convert to local time, the software must know the local timezone
- offset from UTC/GMT. The modification time may be used by non-Unix
- systems to support inter-timezone freshening and updating of zip
- archives.
- The local-header extra block may optionally contain UID and GID
- info for the file. The local-header TSize value is the only
- indication of this. Note that Unix UIDs and GIDs are usually
- specific to a particular machine, and they generally require root
- access to restore.
- This extra field type is obsolete, but it has been in use since
- mid-1994. Therefore future archiving software should continue to
- support it. Some guidelines:
- An archive member should either contain the old "Unix1"
- extra field block or the new extra field types "time" and/or
- "Unix2".
- If both the old "Unix1" block type and one or both of the new
- block types "time" and "Unix2" are found, the "Unix1" block
- should be considered invalid and ignored.
- Unarchiving software should recognize both old and new extra
- field block types, but the info from new types overrides the
- old "Unix1" field.
- Archiving software should recognize "Unix1" extra fields for
- timestamp comparison but never create it for updated, freshened
- or new archive members. When copying existing members to a new
- archive, any "Unix1" extra field blocks should be converted to
- the new "time" and/or "Unix2" types.
- -Info-ZIP Unix Extra Field (type 2):
- ==================================
- The following is the layout of the new Info-ZIP extra block for
- Unix. (Last Revision 19960922)
- Local-header version:
- Value Size Description
- ----- ---- -----------
- (Unix2) 0x7855 Short tag for this extra block type
- TSize Short total data size for this block
- UID Short Unix user ID
- GID Short Unix group ID
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (Unix2) 0x7855 Short tag for this extra block type
- TSize Short total data size for this block
- The data size of the central-header version is zero; it is used
- solely as a flag that UID/GID info is present in the local-header
- extra field. If additional fields are ever added to the local
- version, the central version may be extended to indicate this.
- Note that Unix UIDs and GIDs are usually specific to a particular
- machine, and they generally require root access to restore.
- -ASi Unix Extra Field:
- ====================
- The following is the layout of the ASi extra block for Unix. The
- local-header and central-header versions are identical.
- (Last Revision 19960916)
- Value Size Description
- ----- ---- -----------
- (Unix3) 0x756e Short tag for this extra block type
- TSize Short total data size for this block
- CRC Long CRC-32 of the remaining data
- Mode Short file permissions
- SizDev Long symlink'd size OR major/minor dev num
- UID Short user ID
- GID Short group ID
- (var.) variable symbolic link filename
- Mode is the standard Unix st_mode field from struct stat, containing
- user/group/other permissions, setuid/setgid and symlink info, etc.
- If Mode indicates that this file is a symbolic link, SizDev is the
- size of the file to which the link points. Otherwise, if the file
- is a device, SizDev contains the standard Unix st_rdev field from
- struct stat (includes the major and minor numbers of the device).
- SizDev is undefined in other cases.
- If Mode indicates that the file is a symbolic link, the final field
- will be the name of the file to which the link points. The file-
- name length can be inferred from TSize.
- [Note that TSize may incorrectly refer to the data size not counting
- the CRC; i.e., it may be four bytes too small.]
- -BeOS Extra Field:
- ================
- The following is the layout of the file-attributes extra block for
- BeOS. (Last Revision 19970531)
- Local-header version:
- Value Size Description
- ----- ---- -----------
- (BeOS) 0x6542 Short tag for this extra block type
- TSize Short total data size for this block
- BSize Long uncompressed file attribute data size
- Flags Byte info bits
- (CType) Short compression type
- (CRC) Long CRC value for uncompressed file attribs
- Attribs variable file attribute data
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (BeOS) 0x6542 Short tag for this extra block type
- TSize Short total data size for this block
- BSize Long size of uncompressed local EF block data
- Flags Byte info bits
- The least significant bit of Flags in both headers indicates whether
- the LOCAL extra field is uncompressed (and therefore whether CType
- and CRC are omitted):
- bit 0 if set, Attribs is uncompressed (no CType, CRC)
- bits 1-7 reserved; if set, assume error or unknown data
- Currently the only supported compression types are deflated (type 8)
- and stored (type 0); the latter is not used by Info-ZIP's Zip but is
- supported by UnZip.
- Attribs is a BeOS-specific block of data in big-endian format with
- the following structure (if compressed, uncompress it first):
- Value Size Description
- ----- ---- -----------
- Name variable attribute name (null-terminated string)
- Type Long attribute type (32-bit unsigned integer)
- Size Long Long data size for this sub-block (64 bits)
- Data variable attribute data
- The attribute structure is repeated for every attribute. The Data
- field may contain anything--text, flags, bitmaps, etc.
- -SMS/QDOS Extra Field:
- ====================
- The following is the layout of the file-attributes extra block for
- SMS/QDOS. The local-header and central-header versions are identical.
- (Last Revision 19960929)
- Value Size Description
- ----- ---- -----------
- (QDOS) 0xfb4a Short tag for this extra block type
- TSize Short total data size for this block
- LongID Long extra-field signature
- (ExtraID) Long additional signature/flag bytes
- QDirect 64 bytes qdirect structure
- LongID may be "QZHD" or "QDOS". In the latter case, ExtraID will
- be present. Its first three bytes are "02 "; the last byte is
- currently undefined.
- QDirect contains the file's uncompressed directory info (qdirect
- struct). Its elements are in native (big-endian) format:
- d_length beLong file length
- d_access byte file access type
- d_type byte file type
- d_datalen beLong data length
- d_reserved beLong unused
- d_szname beShort size of filename
- d_name 36 bytes filename
- d_update beLong time of last update
- d_refdate beLong file version number
- d_backup beLong time of last backup (archive date)
- -AOS/VS Extra Field:
- ==================
- The following is the layout of the extra block for Data General
- AOS/VS. The local-header and central-header versions are identical.
- (Last Revision 19961125)
- Value Size Description
- ----- ---- -----------
- (AOSVS) 0x5356 Short tag for this extra block type
- TSize Short total data size for this block
- "FCI " Long extra-field signature
- Version Byte version of AOS/VS extra block (10 = 1.0)
- Fstat variable fstat packet
- AclBuf variable raw ACL data ($MXACL bytes)
- Fstat contains the file's uncompressed fstat packet, which is one of
- the following:
- normal fstat packet (P_FSTAT struct)
- DIR/CPD fstat packet (P_FSTAT_DIR struct)
- unit (device) fstat packet (P_FSTAT_UNIT struct)
- IPC file fstat packet (P_FSTAT_IPC struct)
- AclBuf contains the raw ACL data; its length is $MXACL.
- -FWKCS MD5 Extra Field:
- =====================
- The following is the layout of the optional extra block used by the
- FWKCS utility. There is no local-header version; the following
- applies only to the central header. (Last Revision 19961207)
- Central-header version:
- Value Size Description
- ----- ---- -----------
- (MD5) 0x4b46 Short tag for this extra block type
- TSize Short total data size for this block (19)
- "MD5" 3 bytes extra-field signature
- MD5hash 16 bytes 128-bit MD5 hash of uncompressed data
- The MD5 hash in this extra block is used to automatically identify
- files independent of their filenames; it is an an enhanced contents-
- signature.
- FWKCS provides an option to strip this extra field, if
- present, from a zipfile central directory. In adding
- this extra field, FWKCS preserves Zipfile Authenticity
- Verification; if stripping this extra field, FWKCS
- preserves all versions of AV through PKZIP version 2.04g.
- ``The MD5 algorithm is being placed in the public domain for review
- and possible adoption as a standard.'' (Ron Rivest, MIT Laboratory
- for Computer Science and RSA Data Security, Inc., April 1992, RFC
- 1321, 11.76-77). FWKCS, and FWKCS Contents_Signature System, are
- trademarks of Frederick W. Kantor.