FIX: Zip plugin: Don't create empty dummy files in the archive when file or directory does not exist.

This commit is contained in:
cobines 2012-05-13 16:17:07 +00:00
commit 26117e617e
2 changed files with 40 additions and 38 deletions

View file

@ -297,7 +297,8 @@ var
UncompressedStream : TStream;
AttrEx : TAbAttrExRec;
begin
AbFileGetAttrEx(Item.DiskFileName, AttrEx);
if not AbFileGetAttrEx(Item.DiskFileName, AttrEx) then
Raise EAbFileNotFound.Create;
if ((AttrEx.Attr and faDirectory) <> 0) then
UncompressedStream := TMemoryStream.Create
else

View file

@ -1869,43 +1869,44 @@ Index: AbZipPrc.pas
--- AbZipPrc.pas (revision 512)
+++ AbZipPrc.pas (working copy)
@@ -67,7 +67,8 @@
AbVMStrm,
AbDfBase,
AbDfEnc,
- AbSpanSt;
+ AbSpanSt,
+ DCClassesUtf8;
{ ========================================================================== }
@@ -294,22 +295,13 @@
OutStream : TStream );
var
UncompressedStream : TStream;
- SaveDir : string;
AttrEx : TAbAttrExRec;
begin
- GetDir(0, SaveDir);
- try {SaveDir}
- if (Sender.BaseDirectory <> '') then
- ChDir(Sender.BaseDirectory);
- AbFileGetAttrEx(Item.DiskFileName, AttrEx);
- 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}
+ AbFileGetAttrEx(Item.DiskFileName, AttrEx);
+ if ((AttrEx.Attr and faDirectory) <> 0) then
+ UncompressedStream := TMemoryStream.Create
+ else
+ UncompressedStream := TFileStreamEx.Create(Item.DiskFileName, fmOpenRead or fmShareDenyWrite);
try {UncompressedStream}
{$IFDEF UNIX}
Item.ExternalFileAttributes := LongWord(AttrEx.Mode) shl 16 + LongWord(AttrEx.Attr);
AbVMStrm,
AbDfBase,
AbDfEnc,
- AbSpanSt;
+ AbSpanSt,
+ DCClassesUtf8;
{ ========================================================================== }
@@ -294,22 +295,14 @@
OutStream : TStream );
var
UncompressedStream : TStream;
- SaveDir : string;
AttrEx : TAbAttrExRec;
begin
- GetDir(0, SaveDir);
- try {SaveDir}
- if (Sender.BaseDirectory <> '') then
- ChDir(Sender.BaseDirectory);
- AbFileGetAttrEx(Item.DiskFileName, AttrEx);
- 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}
+ if not AbFileGetAttrEx(Item.DiskFileName, AttrEx) then
+ Raise EAbFileNotFound.Create;
+ if ((AttrEx.Attr and faDirectory) <> 0) then
+ UncompressedStream := TMemoryStream.Create
+ else
+ UncompressedStream := TFileStreamEx.Create(Item.DiskFileName, fmOpenRead or fmShareDenyWrite);
try {UncompressedStream}
{$IFDEF UNIX}
Item.ExternalFileAttributes := LongWord(AttrEx.Mode) shl 16 + LongWord(AttrEx.Attr);
Index: AbZipTyp.pas
===================================================================
--- AbZipTyp.pas (revision 512)