/* blast.h -- interface for blast.c
Copyright ( C ) 2003 , 2012 , 2013 Mark Adler
version 1 . 3 , 24 Aug 2013
This software is provided ' as - is ' , without any express or implied
warranty . In no event will the author be held liable for any damages
arising from the use of this software .
Permission is granted to anyone to use this software for any purpose ,
including commercial applications , and to alter it and redistribute it
freely , subject to the following restrictions :
1 . The origin of this software must not be misrepresented ; you must not
claim that you wrote the original software . If you use this software
in a product , an acknowledgment in the product documentation would be
appreciated but is not required .
2 . Altered source versions must be plainly marked as such , and must not be
misrepresented as being the original software .
3 . This notice may not be removed or altered from any source distribution .
Mark Adler madler @ alumni . caltech . edu
*/
/*
* blast ( ) decompresses the PKWare Data Compression Library ( DCL ) compressed
* format . It provides the same functionality as the explode ( ) function in
* that library . ( Note : PKWare overused the " implode " verb , and the format
* used by their library implode ( ) function is completely different and
* incompatible with the implode compression method supported by PKZIP . )
*
* The binary mode for stdio functions should be used to assure that the
* compressed data is not corrupted when read or written . For example :
* fopen ( . . . , " rb " ) and fopen ( . . . , " wb " ) .
*/
typedef unsigned (*blast_in)(void *how, unsigned char **buf);
typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len);
/* Definitions for input/output functions passed to blast(). See below for
* what the provided functions need to do .
*/
int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow,
unsigned *left, unsigned char **in);
/* Decompress input to output using the provided infun() and outfun() calls.
* On success , the return value of blast ( ) is zero . If there is an error in
* the source data , i . e . it is not in the proper format , then a negative value
* is returned . If there is not enough input available or there is not enough
* output space , then a positive error is returned .
*
* The input function is invoked : len = infun ( how , & buf ) , where buf is set by
* infun ( ) to point to the input buffer , and infun ( ) returns the number of
* available bytes there . If infun ( ) returns zero , then blast ( ) returns with
* an input error . ( blast ( ) only asks for input if it needs it . ) inhow is for
* use by the application to pass an input descriptor to infun ( ) , if desired .
*
* If left and in are not NULL and * left is not zero when blast ( ) is called ,
* then the * left bytes at * in are consumed for input before infun ( ) is used .
*
* The output function is invoked : err = outfun ( how , buf , len ) , where the bytes
* to be written are buf [ 0 . . len - 1 ] . If err is not zero , then blast ( ) returns
* with an output error . outfun ( ) is always called with len < = 4096 . outhow
* is for use by the application to pass an output descriptor to outfun ( ) , if
* desired .
*
* If there is any unused input , * left is set to the number of bytes that were
* read and * in points to them . Otherwise * left is set to zero and * in is set
* to NULL . If left or in are NULL , then they are not set .
*
* The return codes are :
*
* 2 : ran out of input before completing decompression
* 1 : output error before completing decompression
* 0 : successful decompression
* - 1 : literal flag not zero or one
* - 2 : dictionary size not in 4 . . 6
* - 3 : distance is too far back
*
* At the bottom of blast . c is an example program that uses blast ( ) that can be
* compiled to produce a command - line decompression filter by defining TEST .
*/
Messung V0.5 in Prozent C=87 H=85 G=85
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-17)
¤
*© Formatika GbR, Deutschland