mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 21:09:11 +02:00
* skipheader option for decompression
git-svn-id: trunk@6442 -
This commit is contained in:
parent
6741866689
commit
56b380c79e
@ -81,7 +81,7 @@ type
|
|||||||
procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer;
|
procedure DecompressBuf(const InBuf: Pointer; InBytes: Integer;
|
||||||
OutEstimate: Integer; var OutBuf: Pointer; var OutBytes: Integer);
|
OutEstimate: Integer; var OutBuf: Pointer; var OutBytes: Integer);
|
||||||
public
|
public
|
||||||
constructor Create(ASource: TStream);
|
constructor Create(ASource: TStream; ASkipHeader : Boolean = False);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function Read(var Buffer; Count: Longint): Longint; override;
|
function Read(var Buffer; Count: Longint): Longint; override;
|
||||||
function Write(const Buffer; Count: Longint): Longint; override;
|
function Write(const Buffer; Count: Longint): Longint; override;
|
||||||
@ -306,11 +306,14 @@ end;
|
|||||||
|
|
||||||
// TDecompressionStream
|
// TDecompressionStream
|
||||||
|
|
||||||
constructor TDecompressionStream.Create(ASource: TStream);
|
constructor TDecompressionStream.Create(ASource: TStream; ASkipHeader : Boolean = False);
|
||||||
begin
|
begin
|
||||||
inherited Create(ASource);
|
inherited Create(ASource);
|
||||||
FZRec.next_in := @FBuffer[0];
|
FZRec.next_in := @FBuffer[0];
|
||||||
DecompressionCheck(inflateInit(FZRec));
|
If ASkipHeader then
|
||||||
|
DeCompressionCheck(inflateInit2(FZRec,-MAX_WBITS))
|
||||||
|
else
|
||||||
|
DeCompressionCheck(inflateInit(FZRec));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TDecompressionStream.Destroy;
|
destructor TDecompressionStream.Destroy;
|
||||||
@ -351,10 +354,10 @@ begin
|
|||||||
Progress(Self);
|
Progress(Self);
|
||||||
end;
|
end;
|
||||||
if DeCompressionCheck(inflate(FZRec, 0)) = Z_STREAM_END then
|
if DeCompressionCheck(inflate(FZRec, 0)) = Z_STREAM_END then
|
||||||
begin
|
begin
|
||||||
Result := Count - FZRec.avail_out;
|
Result := Count - FZRec.avail_out;
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
Result := Count;
|
Result := Count;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user