anchor.diff:      Flags      : Byte; { misc flags}
         { Bit 0: FTEXT    compressed file contains text, can be used for}
                         { cross platform line termination translation}
  -      { Bit 1: FHCRC    header data includes CRC16 for header after}
  -                      { Extra Data, FileName, and Comment, if any}
  -      { Bit 2: FEXTRA   header data contains Extra Data, starts immediately}
  -                      { after header proper}
  +      { Bit 1: FCONTINUATION file is a continuation of a multi-part gzip file}
  +                      { RFC 1952 says this is the header CRC16 flag, but gzip}
  +                      { reserves it and won't extract the file if this is set}
  +                      { header data includes part number after header record}
  +      { Bit 2: FEXTRA   header data contains Extra Data, starts after part}
  +                      { number (if any)}
         { Bit 3: FNAME    header data contains FileName, null terminated}
                         { string starting immediately after Extra Data (if any)}
  +                      { RFC 1952 says this is ISO 8859-1 encoded, but gzip}
  +                      { always uses the system encoding}
         { Bit 4: FCOMMENT header data contains Comment, null terminated string}
                         { starting immediately after FileName (if any)}
  -      { Bits 5..7 are undefined and reserved as of this writing (4/27/2001)}
  +      { Bit 5: FENCRYPTED file is encrypted using zip-1.9 encryption }
  +                      { header data contains a 12-byte encryption header }
  +                      { starting immediately after Comment.  Documented in}
  +                      { "algorithm.doc", but unsupported in gzip}
  +      { Bits 6..7 are undefined and reserved as of this writing (8/25/2009)}
       ModTime    : LongInt; { File Modification (Creation) time,}
                             { UNIX cdate format}
       XtraFlags  : Byte;   { additional flags}
  
positive.code: 
  procedure TAbGzipItem.SaveGzHeaderToStream(AStream: TStream);
  var
    HBuff, HPtr : PAnsiChar;
    HSize, I32 : LongInt;
    I16 : ShortInt;
    LenW  : Word;
    tempFileName: string;
  begin
    { start with basic header record }
    HSize := SizeOf(TAbGzHeader);
  
    { default ID fields }
    FGzHeader.ID1 := AB_GZ_HDR_ID1;
    FGzHeader.ID2 := AB_GZ_HDR_ID2;
  
negative.code:   { compression method }
    FGzHeader.CompMethod := 8;  { deflate }
  
    { reset unsupported flags }
    FGzHeader.Flags := FGzHeader.Flags and not AB_GZ_UNSUPPORTED_FLAGS;
  
    { main header data }
    AStream.Write(FGzHeader, SizeOf(TAbGzHeader));
  
    { add extra field if any }
    if HasExtraField then begin
      LenW := Length(FExtraField);
      AStream.Write(LenW, SizeOf(LenW));
      AStream.Write(FExtraField[1], LenW);
    end;
  
    { add filename if any (and include final #0 from string) }
    if HasFileName then begin
      AnsiName := AnsiString(FileName);
      AStream.Write(AnsiName[1], Length(AnsiName) + 1);
    end;
  
    { add file comment if any (and include final #0 from string) }
    if HasFileComment then
      AStream.Write(FFileComment[1], Length(FFileComment) + 1);
  end;
  
  procedure TAbGzipItem.SetExternalFileAttributes(Value: LongInt);
  