unit AbZipPrc;
compiler warning
UncompressedStream can be nil in finally
procedure AbZip( Sender : TAbZipArchive; Item : TAbZipItem;
OutStream : TStream );
var
UncompressedStream : TStream;
SaveDir : string;
AttrEx : TAbAttrExRec;
begin
GetDir(0, SaveDir);
try {SaveDir}
if (Sender.BaseDirectory <> '') then
ChDir(Sender.BaseDirectory);
if not AbFileGetAttrEx(Item.DiskFileName, AttrEx) then
raise EAbFileNotFound.Create;
if ((AttrEx.Attr and faDirectory) <> 0) then
UncompressedStream := TMemoryStream.Create
else
UncompressedStream :=
TFileStream.Create(Item.DiskFileName, fmOpenRead or fmShareDenyWrite);
finally {SaveDir}
ChDir( SaveDir );
end; {SaveDir}
try {UncompressedStream}
{$IFDEF UNIX}
Item.ExternalFileAttributes := LongWord(AttrEx.Mode) shl 16 + LongWord(AttrEx.Attr);
{$ELSE}
Item.ExternalFileAttributes := AttrEx.Attr;
{$ENDIF}
Item.LastModTimeAsDateTime := AttrEx.Time;
DoZipFromStream(Sender, Item, OutStream, UncompressedStream);
finally {UncompressedStream}
UncompressedStream.Free;
end; {UncompressedStream}
end;