X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Flizard.h;h=616d17b0c07e104f149ffff14f0774d2044c458b;hb=46ddff89cca52f48ad1ed9eda5d5d9aa0b2f5ea5;hp=3f72b96cdce392bdca47b26d4e6498982a5c2e38;hpb=926ebb68acc6d24980e2a8e90383d21636657012;p=libucw.git diff --git a/lib/lizard.h b/lib/lizard.h index 3f72b96c..616d17b0 100644 --- a/lib/lizard.h +++ b/lib/lizard.h @@ -7,6 +7,9 @@ * of the GNU Lesser General Public License. */ +#ifndef _UCW_LIZARD_H +#define _UCW_LIZARD_H + #define LIZARD_NEEDS_CHARS 8 /* The compression routine needs input buffer 8 characters longer, because it * does not check the input bounds all the time. */ @@ -20,22 +23,27 @@ * The multiplicative constant comes from 19-byte incompressible string * followed by a 3-sequence that can be compressed into 2-byte link. This * breaks the copy-mode and it needs to be restarted with a new header. The - * total length is 2(header) + 2(link) + 19(string) = 23. + * total length is 2(header) + 19(string) + 2(link) = 23. */ /* lizard.c */ -int lizard_compress(byte *in, uns in_len, byte *out); -int lizard_decompress(byte *in, byte *out); +int lizard_compress(const byte *in, uns in_len, byte *out); +int lizard_decompress(const byte *in, byte *out); /* lizard-safe.c */ -struct sigaction; -struct lizard_buffer { - uns len; - void *start, *ptr; - struct sigaction *old_sigsegv_handler; -}; - -struct lizard_buffer *lizard_alloc(uns max_len); +struct lizard_buffer; + +struct lizard_buffer *lizard_alloc(void); void lizard_free(struct lizard_buffer *buf); -void lizard_realloc(struct lizard_buffer *buf, uns max_len); -int lizard_decompress_safe(byte *in, struct lizard_buffer *buf, uns expected_length); +byte *lizard_decompress_safe(const byte *in, struct lizard_buffer *buf, uns expected_length); + +/* adler32.c */ +uns update_adler32(uns adler, const byte *ptr, uns len); + +static inline uns +adler32(const byte *buf, uns len) +{ + return update_adler32(1, buf, len); +} + +#endif