anchor.diff:  
     TAbTarArchive = class(TAbArchive)
     protected
  -    function CreateItem(const FileSpec : string): TAbArchiveItem;
  +    function CreateItem(const FileName : string): TAbArchiveItem;
         override;
       procedure ExtractItemAt(Index : Integer; const NewName : string);
         override;
  
positive.code: end;
  
  
  function TAbTarArchive.CreateItem(const FileSpec: string): TAbArchiveItem;
  var
    Buff : array [0..255] of AnsiChar;
    Item : TAbTarItem;
  begin
    Item := TAbTarItem.Create;
    try
      Item.CompressedSize := 0;
      Item.CRC32 := 0;
      StrPCopy(Buff, ExpandFileName(FileSpec));
      {$IFDEF MSWINDOWS }
      AnsiToOEM(Buff, Buff);
      {$ENDIF MSWINDOWS }
      Item.DiskFileName := Buff;
      StrPCopy(Buff, FixName(FileSpec));
      {$IFDEF MSWINDOWS }
      AnsiToOEM(Buff, Buff);
  
negative.code:   { find length of item }
    Len := RoundToTarBlock(OctalToInt(Item.Size, 12));
    { seek past file to next header }
    TarF.Seek((AB_TAR_RECORDSIZE-SizeOf(TAbTarHeaderRec)) + Len, soCurrent);
    Result := TarF.Read(Item, SizeOf(TAbTarHeaderRec));
  end;
  
  