/* ** Copyright (C) 2004-2006 by Carnegie Mellon University. ** ** @OPENSOURCE_HEADER_START@ ** ** Use of the SILK system and related source code is subject to the terms ** of the following licenses: ** ** GNU Public License (GPL) Rights pursuant to Version 2, June 1991 ** Government Purpose License Rights (GPLR) pursuant to DFARS 252.225-7013 ** ** NO WARRANTY ** ** ANY INFORMATION, MATERIALS, SERVICES, INTELLECTUAL PROPERTY OR OTHER ** PROPERTY OR RIGHTS GRANTED OR PROVIDED BY CARNEGIE MELLON UNIVERSITY ** PURSUANT TO THIS LICENSE (HEREINAFTER THE "DELIVERABLES") ARE ON AN ** "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY ** KIND, EITHER EXPRESS OR IMPLIED AS TO ANY MATTER INCLUDING, BUT NOT ** LIMITED TO, WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE, ** MERCHANTABILITY, INFORMATIONAL CONTENT, NONINFRINGEMENT, OR ERROR-FREE ** OPERATION. CARNEGIE MELLON UNIVERSITY SHALL NOT BE LIABLE FOR INDIRECT, ** SPECIAL OR CONSEQUENTIAL DAMAGES, SUCH AS LOSS OF PROFITS OR INABILITY ** TO USE SAID INTELLECTUAL PROPERTY, UNDER THIS LICENSE, REGARDLESS OF ** WHETHER SUCH PARTY WAS AWARE OF THE POSSIBILITY OF SUCH DAMAGES. ** LICENSEE AGREES THAT IT WILL NOT MAKE ANY WARRANTY ON BEHALF OF ** CARNEGIE MELLON UNIVERSITY, EXPRESS OR IMPLIED, TO ANY PERSON ** CONCERNING THE APPLICATION OF OR THE RESULTS TO BE OBTAINED WITH THE ** DELIVERABLES UNDER THIS LICENSE. ** ** Licensee hereby agrees to defend, indemnify, and hold harmless Carnegie ** Mellon University, its trustees, officers, employees, and agents from ** all claims or demands made against them (and any related losses, ** expenses, or attorney's fees) arising out of, or relating to Licensee's ** and/or its sub licensees' negligent use or willful misuse of or ** negligent conduct or willful misconduct regarding the Software, ** facilities, or other rights or assistance granted by Carnegie Mellon ** University under this License, including, but not limited to, any ** claims of product liability, personal injury, death, damage to ** property, or violation of any laws or regulations. ** ** Carnegie Mellon University Software Engineering Institute authored ** documents are sponsored by the U.S. Department of Defense under ** Contract F19628-00-C-0003. Carnegie Mellon University retains ** copyrights in all material produced under this contract. The U.S. ** Government retains a non-exclusive, royalty-free license to publish or ** reproduce these documents, or allow others to do so, for U.S. ** Government purposes only pursuant to the copyright license under the ** contract clause at 252.227.7013. ** ** @OPENSOURCE_HEADER_END@ */ #ifndef _LZO_FILE_H #define _LZO_FILE_H #include "silk.h" RCSIDENTVAR(rcsID_LZO_FILE_H, "$SiLK: lzo-file.h 2978 2006-02-09 20:54:19Z mthomas $"); /* ** lzo-file.h ** ** Wrapper around the liblzo compression library. ** */ #include SK_LZO_HEADER_NAME #define LZO_MAX_BUF_SIZE 65536 /* The following formula is in the lzo faq: http://www.oberhumer.com/opensource/lzo/lzofaq.php */ #define LZO_MAX_COMP_SIZE (LZO_MAX_BUF_SIZE + (LZO_MAX_BUF_SIZE / 16) + 64 + 3) /* The type of lzo compression buffers */ typedef struct compr_buffer *lzo_compr_buffer_t; /* The type of lzo decompression buffers */ typedef struct decompr_buffer *lzo_decompr_buffer_t; /* Creates an lzo compression buffer. Returns NULL on error. */ lzo_compr_buffer_t lzo_create_compr_buffer(void); /* Creates an lzo decompression buffer. Returns NULL on error. */ lzo_decompr_buffer_t lzo_create_decompr_buffer(void); /* Destroys an lzo compression buffer. */ #define lzo_destroy_compr_buffer free /* Destroys an lzo decompression buffer. */ #define lzo_destroy_decompr_buffer free /* Associates a file and the file's location with an lzo compression buffer. */ void lzo_bind_compr_buffer(lzo_compr_buffer_t fd, FILE *file); /* Associates a file and the file's location with an lzo decompression buffer. */ void lzo_bind_decompr_buffer(lzo_decompr_buffer_t fd, FILE *file); /* Reads count uncompressed bytes into buf from the decompression buffer fd. Returns number of bytes read on success, -1 on failure. Will return 0 when it has reached the end on the compressed section. */ ssize_t lzo_read(lzo_decompr_buffer_t fd, void *buf, size_t count); /* Writes count uncompressed bytes from buf into the compression buffer fd. Returns number of bytes written on success, -1 on failure. */ ssize_t lzo_write(lzo_compr_buffer_t fd, void *buf, size_t count); /* Finishes a series of compressed writes. Returns the total compressed size of the compressed section on success, -1 on error. */ off_t lzo_flush(lzo_compr_buffer_t fd); /* Returns an lower-bound estimate of the current compressed size of what has been written in the current section. -1 on error. */ off_t lzo_compr_size(lzo_compr_buffer_t fd); /* Returns an upper-bound estimate of the current compressed size of what has been written in the current section. -1 on error. */ off_t lzo_compr_size_upper_bound(lzo_compr_buffer_t fd); /* Returns a string representing the error state of fd. */ char *lzo_compr_strerror(lzo_compr_buffer_t fd); /* Returns a string representing the error state of fd. */ char *lzo_decompr_strerror(lzo_decompr_buffer_t fd); #endif /* _LZO_FILE_H */