============================================================================ | |
miniLZO -- mini subset of the LZO real-time data compression library | |
============================================================================ | |
Author : Markus Franz Xaver Johannes Oberhumer | |
<markus@oberhumer.com> | |
http://www.oberhumer.com/opensource/lzo/ | |
Version : 2.03 | |
Date : 30 Apr 2008 | |
I've created miniLZO for projects where it is inconvenient to | |
include (or require) the full LZO source code just because you | |
want to add a little bit of data compression to your application. | |
miniLZO implements the LZO1X-1 compressor and both the standard and | |
safe LZO1X decompressor. Apart from fast compression it also useful | |
for situations where you want to use pre-compressed data files (which | |
must have been compressed with LZO1X-999). | |
miniLZO consists of one C source file and three header files: | |
minilzo.c | |
minilzo.h, lzoconf.h, lzodefs.h | |
To use miniLZO just copy these files into your source directory, add | |
minilzo.c to your Makefile and #include minilzo.h from your program. | |
Note: you also must distribute this file (`README.LZO') with your project. | |
minilzo.o compiles to about 6 kB (using gcc or Visual C on a i386), and | |
the sources are about 30 kB when packed with zip - so there's no more | |
excuse that your application doesn't support data compression :-) | |
For more information, documentation, example programs and other support | |
files (like Makefiles and build scripts) please download the full LZO | |
package from | |
http://www.oberhumer.com/opensource/lzo/ | |
Have fun, | |
Markus | |
P.S. minilzo.c is generated automatically from the LZO sources and | |
therefore functionality is completely identical | |
Appendix A: building miniLZO | |
---------------------------- | |
miniLZO is written such a way that it should compile and run | |
out-of-the-box on most machines. | |
If you are running on a very unusual architecture and lzo_init() fails then | |
you should first recompile with `-DLZO_DEBUG' to see what causes the failure. | |
The most probable case is something like `sizeof(char *) != sizeof(long)'. | |
After identifying the problem you can compile by adding some defines | |
like `-DSIZEOF_CHAR_P=8' to your Makefile. | |
The best solution is (of course) using Autoconf - if your project uses | |
Autoconf anyway just add `-DMINILZO_HAVE_CONFIG_H' to your compiler | |
flags when compiling minilzo.c. See the LZO distribution for an example | |
how to set up configure.in. | |
Appendix B: list of public functions available in miniLZO | |
--------------------------------------------------------- | |
Library initialization | |
lzo_init() | |
Compression | |
lzo1x_1_compress() | |
Decompression | |
lzo1x_decompress() | |
lzo1x_decompress_safe() | |
Checksum functions | |
lzo_adler32() | |
Version functions | |
lzo_version() | |
lzo_version_string() | |
lzo_version_date() | |
Portable (but slow) string functions | |
lzo_memcmp() | |
lzo_memcpy() | |
lzo_memmove() | |
lzo_memset() | |
Appendix C: suggested macros for `configure.in' when using Autoconf | |
------------------------------------------------------------------- | |
Checks for typedefs and structures | |
AC_CHECK_TYPE(ptrdiff_t,long) | |
AC_TYPE_SIZE_T | |
AC_CHECK_SIZEOF(short) | |
AC_CHECK_SIZEOF(int) | |
AC_CHECK_SIZEOF(long) | |
AC_CHECK_SIZEOF(long long) | |
AC_CHECK_SIZEOF(__int64) | |
AC_CHECK_SIZEOF(void *) | |
AC_CHECK_SIZEOF(size_t) | |
AC_CHECK_SIZEOF(ptrdiff_t) | |
Checks for compiler characteristics | |
AC_C_CONST | |
Checks for library functions | |
AC_CHECK_FUNCS(memcmp memcpy memmove memset) | |
Appendix D: Copyright | |
--------------------- | |
LZO and miniLZO are Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, | |
2003, 2004, 2005, 2006, 2007, 2008 Markus Franz Xaver Johannes Oberhumer | |
LZO and miniLZO are distributed under the terms of the GNU General | |
Public License (GPL). See the file COPYING. | |
Special licenses for commercial and other applications which | |
are not willing to accept the GNU General Public License | |
are available by contacting the author. | |