* skipheader option for decompression

git-svn-id: trunk@6442 -
This commit is contained in:
peter 2007-02-11 20:19:58 +00:00
parent 6741866689
commit 56b380c79e

View File

@ -81,7 +81,7 @@ type
procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer;
OutEstimate: Integer; var OutBuf: Pointer; var OutBytes: Integer);
public
constructor Create(ASource: TStream);
constructor Create(ASource: TStream; ASkipHeader : Boolean = False);
destructor Destroy; override;
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
@ -306,11 +306,14 @@ end;
// TDecompressionStream
constructor TDecompressionStream.Create(ASource: TStream);
constructor TDecompressionStream.Create(ASource: TStream; ASkipHeader : Boolean = False);
begin
inherited Create(ASource);
FZRec.next_in := @FBuffer[0];
DecompressionCheck(inflateInit(FZRec));
If ASkipHeader then
DeCompressionCheck(inflateInit2(FZRec,-MAX_WBITS))
else
DeCompressionCheck(inflateInit(FZRec));
end;
destructor TDecompressionStream.Destroy;
@ -351,10 +354,10 @@ begin
Progress(Self);
end;
if DeCompressionCheck(inflate(FZRec, 0)) = Z_STREAM_END then
begin
Result := Count - FZRec.avail_out;
Exit;
end;
begin
Result := Count - FZRec.avail_out;
Exit;
end;
end;
Result := Count;
end;