plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

flate.3 (4174B)


      1 .TH FLATE 3
      2 .SH NAME
      3 deflateinit, deflate, deflatezlib, deflateblock, deflatezlibblock, inflateinit, inflate, inflatezlib, inflateblock, inflatezlibblock, flateerr, mkcrctab, blockcrc, adler32 \- deflate compression
      4 .SH SYNOPSIS
      5 .B #include <u.h>
      6 .br
      7 .B #include <libc.h>
      8 .br
      9 .B #include <flate.h>
     10 .PP
     11 .ta \w'\fLulongmm'u +\w'\fL  'u
     12 .PP
     13 .B
     14 int	deflateinit(void)
     15 .PP
     16 .B
     17 int	deflate(void *wr, int (*w)(void*,void*,int),
     18 .br
     19 .B
     20 		void *rr, int (*r)(void*,void*,int),
     21 .br
     22 .B
     23 		int level, int debug)
     24 .PP
     25 .B
     26 int	deflatezlib(void *wr, int (*w)(void*,void*,int),
     27 .br
     28 .B
     29 		void *rr, int (*r)(void*,void*,int),
     30 .br
     31 .B
     32 		int level, int debug)
     33 .PP
     34 .B
     35 int	deflateblock(uchar *dst, int dsize,
     36 .br
     37 .B
     38 		uchar *src, int ssize,
     39 .br
     40 .B
     41 		int level, int debug)
     42 .PP
     43 .B
     44 int	deflatezlibblock(uchar *dst, int dsize,
     45 .br
     46 .B
     47 		uchar *src, int ssize,
     48 .br
     49 .B
     50 		int level, int debug)
     51 .PP
     52 .B
     53 int	inflateinit(void)
     54 .PP
     55 .B
     56 int	inflate(void *wr, int (*w)(void*, void*, int),
     57 .br
     58 .B
     59 		void *getr, int (*get)(void*))
     60 .PP
     61 .B
     62 int	inflatezlib(void *wr, int (*w)(void*, void*, int),
     63 .br
     64 .B
     65 		void *getr, int (*get)(void*))
     66 .PP
     67 .B
     68 int	inflateblock(uchar *dst, int dsize,
     69 .br
     70 .B
     71 		uchar *src, int ssize)
     72 .PP
     73 .B
     74 int	inflatezlibblock(uchar *dst, int dsize,
     75 .br
     76 .B
     77 		uchar *src, int ssize)
     78 .PP
     79 .B
     80 char	*flateerr(int error)
     81 .PP
     82 .B
     83 ulong	*mkcrctab(ulong poly)
     84 .PP
     85 .B
     86 ulong	blockcrc(ulong *tab, ulong crc, void *buf, int n)
     87 .PP
     88 .B
     89 ulong	adler32(ulong adler, void *buf, int n)
     90 .SH DESCRIPTION
     91 These routines compress and decompress data using the deflate compression algorithm,
     92 which is used for most gzip, zip, and zlib files.
     93 .PP
     94 .I Deflate
     95 compresses input data retrieved by calls to
     96 .I r
     97 with arguments
     98 .IR rr ,
     99 an input buffer, and a count of bytes to read.
    100 .I R
    101 should return the number of bytes read;
    102 end of input is signaled by returning zero, an input error by
    103 returning a negative number.
    104 The compressed output is written to
    105 .I w
    106 with arguments
    107 .IR wr ,
    108 the output data, and the number of bytes to write.
    109 .I W
    110 should return the number of bytes written;
    111 writing fewer than the requested number of bytes is an error.
    112 .I Level
    113 indicates the amount of computation deflate should do while compressing the data.
    114 Higher
    115 .I levels
    116 usually take more time and produce smaller outputs.
    117 Valid values are 1 to 9, inclusive; 6 is a good compromise.
    118 If
    119 .I debug
    120 is non-zero, cryptic debugging information is produced on standard error.
    121 .PP
    122 .I Inflate
    123 reverses the process, converting compressed data into uncompressed output.
    124 Input is retrieved one byte at a time by calling
    125 .I get
    126 with the argument
    127 .IR getr .
    128 End of input of signaled by returning a negative value.
    129 The uncompressed output is written to
    130 .IR w ,
    131 which has the same interface as for
    132 .IR deflate .
    133 .PP
    134 .I
    135 Deflateblock
    136 and
    137 .I inflateblock
    138 operate on blocks of memory but are otherwise similar to
    139 .I deflate
    140 and
    141 .IR inflate .
    142 .PP
    143 The zlib functions are similar, but operate on files with a zlib header and trailer.
    144 .PP
    145 .I Deflateinit
    146 or
    147 .I inflateinit
    148 must be called once before any call to the corresponding routines.
    149 .PP
    150 If the above routines fail,
    151 they return a negative number indicating the problem.
    152 The possible values are
    153 .IR FlateNoMem ,
    154 .IR FlateInputFail ,
    155 .IR FlateOutputFail ,
    156 .IR FlateCorrupted ,
    157 and 
    158 .IR FlateInternal .
    159 .I Flateerr
    160 converts the number into a printable message.
    161 .I FlateOk
    162 is defined to be zero,
    163 the successful return value for
    164 .IR deflateinit ,
    165 .IR deflate ,
    166 .IR deflatezlib ,
    167 .IR inflateinit ,
    168 .IR inflate ,
    169 and 
    170 .IR inflatezlib .
    171 The block functions return the number of bytes produced when they succeed.
    172 .PP
    173 .I Mkcrctab
    174 allocates
    175 (using
    176 .MR malloc (3) ),
    177 initializes, and returns a table for rapid computation of 32 bit CRC values using the polynomial
    178 .IR poly .
    179 .I Blockcrc
    180 uses
    181 .IR tab ,
    182 a table returned by
    183 .IR mkcrctab ,
    184 to update
    185 .I crc
    186 for the
    187 .I n
    188 bytes of data in
    189 .IR buf ,
    190 and returns the new value.
    191 .I Crc
    192 should initially be zero.
    193 .I Blockcrc
    194 pre-conditions and post-conditions
    195 .I crc
    196 by ones complementation.
    197 .PP
    198 .I Adler32
    199 updates the Adler 32-bit checksum of the
    200 .I n
    201 butes of data in
    202 .IR buf.
    203 The initial value of
    204 .I adler
    205 (that is, its value after seeing zero bytes) should be 1.
    206 .SH SOURCE
    207 .B \*9/src/libflate