anchor.diff:      if FArchFormat in [OLDGNU_FORMAT, GNU_FORMAT] then
       begin
         Item.ArchiveFormat := FArchFormat;
  -      Item.LinkFlag := AB_TAR_LF_NORMAL;
  +      Item.LinkFlag := Ord(AB_TAR_LF_NORMAL);
         Item.Magic := AB_TAR_MAGIC_GNUOLD;
       end
       else if FArchFormat in [USTAR_FORMAT] then
       begin
         Item.ArchiveFormat := USTAR_FORMAT;
  -      Item.LinkFlag := AB_TAR_LF_NORMAL;
  +      Item.LinkFlag := Ord(AB_TAR_LF_NORMAL);
         Item.Magic := AB_TAR_MAGIC_VAL+AB_TAR_MAGIC_VER;
       end
       else if (FArchFormat = V7_FORMAT) and (Length(S) > 100) then
  
positive.code:   Move(tempStr[1], PHeader.Size, Length(tempStr));
    AnsiStrings.StrPCopy(PHeader.ModTime, AB_TAR_L_HDR_ARR12_0);  { Stuff zeros }
    { Check sum will be calculated as the Dirty flag is in caller. }
    PHeader.LinkFlag := LinkFlag;  { Stuff Link FlagSize }
    AnsiStrings.StrPCopy(PHeader.Magic.gnuOld, AB_TAR_MAGIC_GNUOLD); { Stuff the magic }
    AnsiStrings.StrPCopy(PHeader.UsrName, AB_TAR_L_HDR_USR_NAME);
    AnsiStrings.StrPCopy(PHeader.GrpName, AB_TAR_L_HDR_GRP_NAME);
  
negative.code:       while not FoundMetaDataHeader and (I <= (FTarHeaderList.Count - 1)) do
        begin
          PHeader := FTarHeaderList.Items[I];
          if CharInSet(Chr(PHeader.LinkFlag), [AB_TAR_LF_LONGLINK]) then
          begin  { Delete this Header, and the data Headers. }
            FoundMetaDataHeader := True;
            TotalOldNumHeaders := Ceil( OctalToInt(PHeader.Size, SizeOf(PHeader.Size)) / AB_TAR_RECORDSIZE);
  