| ============================================================================ | |
| 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. | |