mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-18 13:38:48 +02:00
185 lines
6.9 KiB
ObjectPascal
185 lines
6.9 KiB
ObjectPascal
{
|
|
$Id$
|
|
}
|
|
unit zlib;
|
|
|
|
interface
|
|
|
|
{ Needed for array of const }
|
|
{$mode objfpc}
|
|
{ for linux for linking with libc }
|
|
{$ifdef linux}
|
|
{$linklib c}
|
|
{$endif}
|
|
{$PACKRECORDS 4}
|
|
|
|
const
|
|
ZLIB_VERSION = '1.1.3';
|
|
|
|
libz='z';
|
|
|
|
type
|
|
{ Compatible with paszlib }
|
|
Uint = Longint;
|
|
Ulong = Longint;
|
|
Ulongf = Longint;
|
|
Pulongf = ^Ulongf;
|
|
z_off_t = longint;
|
|
pbyte = ^byte;
|
|
pbytef = ^byte;
|
|
|
|
TAllocfunc = function (opaque:pointer; items:uInt; size:uInt):pointer;cdecl;
|
|
TFreeFunc = procedure (opaque:pointer; address:pointer);cdecl;
|
|
|
|
TInternalState = record
|
|
end;
|
|
PInternalState = ^TInternalstate;
|
|
|
|
TZStream = record
|
|
next_in : pbytef;
|
|
avail_in : uInt;
|
|
total_in : uLong;
|
|
next_out : pbytef;
|
|
avail_out : uInt;
|
|
total_out : uLong;
|
|
msg : pbytef;
|
|
state : PInternalState;
|
|
zalloc : TAllocFunc;
|
|
zfree : TFreeFunc;
|
|
opaque : pointer;
|
|
data_type : longint;
|
|
adler : uLong;
|
|
reserved : uLong;
|
|
end;
|
|
PZstream = ^TZStream;
|
|
gzFile = pointer;
|
|
|
|
|
|
const
|
|
Z_NO_FLUSH = 0;
|
|
|
|
Z_PARTIAL_FLUSH = 1;
|
|
Z_SYNC_FLUSH = 2;
|
|
Z_FULL_FLUSH = 3;
|
|
Z_FINISH = 4;
|
|
|
|
Z_OK = 0;
|
|
Z_STREAM_END = 1;
|
|
Z_NEED_DICT = 2;
|
|
Z_ERRNO = -(1);
|
|
Z_STREAM_ERROR = -(2);
|
|
Z_DATA_ERROR = -(3);
|
|
Z_MEM_ERROR = -(4);
|
|
Z_BUF_ERROR = -(5);
|
|
Z_VERSION_ERROR = -(6);
|
|
|
|
Z_NO_COMPRESSION = 0;
|
|
Z_BEST_SPEED = 1;
|
|
Z_BEST_COMPRESSION = 9;
|
|
Z_DEFAULT_COMPRESSION = -(1);
|
|
|
|
Z_FILTERED = 1;
|
|
Z_HUFFMAN_ONLY = 2;
|
|
Z_DEFAULT_STRATEGY = 0;
|
|
|
|
Z_BINARY = 0;
|
|
Z_ASCII = 1;
|
|
Z_UNKNOWN = 2;
|
|
|
|
Z_DEFLATED = 8;
|
|
|
|
Z_NULL = 0;
|
|
|
|
function zlibVersionpchar:pchar;cdecl;external libz name 'zlibVersion';
|
|
function zlibVersion:string;
|
|
function deflate(var strm:TZStream; flush:longint):longint;cdecl;external libz name 'deflate';
|
|
function deflateEnd(var strm:TZStream):longint;cdecl;external libz name 'deflateEnd';
|
|
function inflate(var strm:TZStream; flush:longint):longint;cdecl;external libz name 'inflate';
|
|
function inflateEnd(var strm:TZStream):longint;cdecl;external libz name 'inflateEnd';
|
|
function deflateSetDictionary(var strm:TZStream;dictionary : pbytef; dictLength:uInt):longint;cdecl;external libz name 'deflateSetDictionary';
|
|
function deflateCopy(var dest,source:TZstream):longint;cdecl;external libz name 'deflateCopy';
|
|
function deflateReset(var strm:TZStream):longint;cdecl;external libz name 'deflateReset';
|
|
function deflateParams(var strm:TZStream; level:longint; strategy:longint):longint;cdecl;external libz name 'deflateParams';
|
|
function inflateSetDictionary(var strm:TZStream;dictionary : pbytef; dictLength:uInt):longint;cdecl;external libz name 'inflateSetDictionary';
|
|
function inflateSync(var strm:TZStream):longint;cdecl;external libz name 'inflateSync';
|
|
function inflateReset(var strm:TZStream):longint;cdecl;external libz name 'inflateReset';
|
|
function compress(dest:pbytef;destLen:uLongf; source : pbytef; sourceLen:uLong):longint;cdecl;external libz name 'compress';
|
|
function compress2(dest:pbytef;destLen:uLongf; source : pbytef; sourceLen:uLong; level:longint):longint;cdecl;external libz name 'compress2';
|
|
function uncompress(dest:pbytef;destLen:uLongf; source : pbytef; sourceLen:uLong):longint;cdecl;external libz name 'uncompress';
|
|
function gzopen(path:pchar; mode:pchar):gzFile;cdecl;external libz name 'gzopen';
|
|
function gzdopen(fd:longint; mode:pchar):gzFile;cdecl;external libz name 'gzdopen';
|
|
function gzsetparams(thefile:gzFile; level:longint; strategy:longint):longint;cdecl;external libz name 'gzsetparams';
|
|
function gzread(thefile:gzFile; buf:pointer; len:cardinal):longint;cdecl;external libz name 'gzread';
|
|
function gzwrite(thefile:gzFile; buf:pointer; len:cardinal):longint;cdecl;external libz name 'gzwrite';
|
|
function gzprintf(thefile:gzFile; format:pbytef; args:array of const):longint;cdecl;external libz name 'gzprintf';
|
|
function gzputs(thefile:gzFile; s:pbytef):longint;cdecl;external libz name 'gzputs';
|
|
function gzgets(thefile:gzFile; buf:pbytef; len:longint):pbytef;cdecl;external libz name 'gzgets';
|
|
function gzputc(thefile:gzFile; c:char):char;cdecl;external libz name 'gzputc';
|
|
function gzgetc(thefile:gzFile):char;cdecl;external libz name 'gzgetc';
|
|
function gzflush(thefile:gzFile; flush:longint):longint;cdecl;external libz name 'gzflush';
|
|
function gzseek(thefile:gzFile; offset:z_off_t; whence:longint):z_off_t;cdecl;external libz name 'gzseek';
|
|
function gzrewind(thefile:gzFile):longint;cdecl;external libz name 'gzrewind';
|
|
function gztell(thefile:gzFile):z_off_t;cdecl;external libz name 'gztell';
|
|
function gzeof(thefile:gzFile):longbool;cdecl;external libz name 'gzeof';
|
|
function gzclose(thefile:gzFile):longint;cdecl;external libz name 'gzclose';
|
|
function gzerror(thefile:gzFile; var errnum:longint):pbytef;cdecl;external libz name 'gzerror';
|
|
function adler32(adler:uLong;buf : pbytef; len:uInt):uLong;cdecl;external libz name 'adler32';
|
|
function crc32(crc:uLong;buf : pbytef; len:uInt):uLong;cdecl;external libz name 'crc32';
|
|
function deflateInit_(var strm:TZStream; level:longint; version:pchar; stream_size:longint):longint;cdecl;external libz name 'deflateInit_';
|
|
function inflateInit_(var strm:TZStream; version:pchar; stream_size:longint):longint;cdecl;external libz name 'inflateInit_';
|
|
function deflateInit(var strm:TZStream;level : longint) : longint;
|
|
function inflateInit(var strm:TZStream) : longint;
|
|
function deflateInit2_(var strm:TZStream; level:longint; method:longint; windowBits:longint; memLevel:longint;strategy:longint; version:pchar; stream_size:longint):longint;cdecl;external libz name 'deflateInit2_';
|
|
function inflateInit2_(var strm:TZStream; windowBits:longint; version:pchar; stream_size:longint):longint;cdecl;external libz name 'inflateInit2_';
|
|
function deflateInit2(var strm:TZStream;level,method,windowBits,memLevel,strategy : longint) : longint;
|
|
function inflateInit2(var strm:TZStream;windowBits : longint) : longint;
|
|
function zErrorpchar(err:longint):pchar;cdecl;external libz name 'zError';
|
|
function zError(err:longint):string;
|
|
function inflateSyncPoint(z:PZstream):longint;cdecl;external libz name 'inflateSyncPoint';
|
|
function get_crc_table:pointer;cdecl;external libz name 'get_crc_table';
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
strings;
|
|
|
|
function zlibversion : string;
|
|
begin
|
|
zlibversion:=strpas(zlibversionpchar);
|
|
end;
|
|
|
|
function deflateInit(var strm:TZStream;level : longint) : longint;
|
|
begin
|
|
deflateInit:=deflateInit_(strm,level,ZLIB_VERSION,sizeof(TZStream));
|
|
end;
|
|
|
|
function inflateInit(var strm:TZStream) : longint;
|
|
begin
|
|
inflateInit:=inflateInit_(strm,ZLIB_VERSION,sizeof(TZStream));
|
|
end;
|
|
|
|
function deflateInit2(var strm:TZStream;level,method,windowBits,memLevel,strategy : longint) : longint;
|
|
begin
|
|
deflateInit2:=deflateInit2_(strm,level,method,windowBits,memLevel,strategy,ZLIB_VERSION,sizeof(TZStream));
|
|
end;
|
|
|
|
function inflateInit2(var strm:TZStream;windowBits : longint) : longint;
|
|
begin
|
|
inflateInit2:=inflateInit2_(strm,windowBits,ZLIB_VERSION,sizeof(TZStream));
|
|
end;
|
|
|
|
function zError(err:longint):string;
|
|
begin
|
|
zerror:=Strpas(zErrorpchar(err));
|
|
end;
|
|
|
|
end.
|
|
{
|
|
$Log$
|
|
Revision 1.6 2000-01-18 21:53:56 peter
|
|
* added libc
|
|
* added log
|
|
|
|
}
|