GZIP Archive Format(gz.rfh):
Class: Archive, Status: Headers only, Last change: 09.09.1999 18:51:30

include UNIXTime.rfi
type

TComprMethod enum byte (
  deflate=8 //all other values are reserved
)

TMemberFlags set 8 of (
  FTEXT=0,
  FHCRC=1,
  FEXTRA=2,
  FNAME=3,
  FCOMMENT=4,
  FENCRYPTED=5
)

TDeflateExtraFlags enum byte (
  Max=2,  // compressor used maximum compression,
          // slowest algorithm
  Fast=4 // compressor used fastest algorithm
)

TExtraFlags(CM) case TComprMethod @:CM of
  deflate: TDeflateExtraFlags
else Byte
endc

TOSCode enum byte (
  FAT=0, // FAT filesystem (MS-DOS, OS/2, NT/Win32)
  Amiga=1, // Amiga
  VMS=2, // VMS (or OpenVMS)
  Unix=3, // Unix
  VM_CMS=4, // VM/CMS
  Atari_TOS=5, // Atari TOS
  HPFS=6, // HPFS filesystem (OS/2, NT)
  Mac=7, // Macintosh
  Z=8, // Z-System
  CP_M=9, // CP/M
  TOPS20=10, // TOPS-20
  NTFS=11, // NTFS filesystem (NT)
  QDOS=12,
  RISCOS=13, // Acorn RISCOS
  unknown=255
)

TExtraField struc
  word XLEN //eXtra LENgth
  raw[@.XLEN] D
ends

TGZMember struc
  word ID //IDentification (Magic)
  TComprMethod CM //Compression Method
  TMemberFlags FLG //FLaGs
  TTimeStamp MTIME //Modification TIME
  TExtraFlags(@.CM) XFL //eXtra FLags
  TOSCode OS //Operating System
  case @.Flg and TMemberFlags.FEXTRA=0 of
    0: TExtraField
  endc Extra
  case @.Flg and TMemberFlags.FNAME=0 of
    0: pchar
  endc FName
  case @.Flg and TMemberFlags.FCOMMENT=0 of
    0: pchar
  endc FComment
  case @.Flg and TMemberFlags.FHCRC=0 of
    0: word
  endc CRC16
ends:assert[@.ID=0x8B1F]

TGZEndRec struc //Can't use it without decompression
  ulong CRC32
  ulong ISize
ends

data

0 TGZMember Hdr

assert Hdr:assert;

data
FileSize-8; TGZEndRec EndRec

descr ('GZIP Archive File Format.',NL,
  'Info Source: GZIP file format specification version 4.3',NL,
  '  (gzip.zip at www.wotsit.org)',NL,
  'ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html',NL)


Other specifications.


FlexT home page, Author`s home page.