Initial commit of liblzf

Unmodified liblzf 3.6 release from http://dist.schmorp.de/liblzf/liblzf-3.6.tar.gz
Website at http://oldhome.schmorp.de/marc/liblzf.html
Licence is BSD-type, and optionally GPLv2

Change-Id: I7d27f2d86c81589e7f5e719084373a7045063e84
Signed-off-by: David Li <davidxli@google.com>
diff --git a/Changes b/Changes
new file mode 100644
index 0000000..93bd4cb
--- /dev/null
+++ b/Changes
@@ -0,0 +1,136 @@
+3.6  Mon Feb  7 17:37:31 CET 2011
+	- fixed hash calculation in C♯ version (Tiago Freitas Leal).
+        - unroll copy for small sizes, use memcpy for larger sizes,
+          greatly speeding up decompression in most cases.
+        - finally disable rep movsb - it's a big loss on modern intel cpus,
+          and only a small win on amd cpus.
+        - improve C++ compatibility of the code.
+        - slightly improve compressor speed.
+        - halved memory requirements for compressor on 64 bit architectures,
+          which can improve the speed quite a bit on older cpus.
+
+3.5  Fri May  1 02:28:42 CEST 2009
+	- lzf_compress did sometimes write one octet past the given output
+          buffer (analyzed and nice testcase by Salvatore Sanfilippo).
+
+3.4  Tue Sep  2 06:45:00 CEST 2008
+	- the fix from 3.3 introduced a compression bug, which is fixed in
+          this release (which explains the mysterious prerelease...). Thanks
+          once more to Clément Calmels.
+
+3.3  Mon Aug 25 03:17:42 CEST 2008
+	- lzf_compress could access memory after the given input buffer
+          when outputting back references. reported with nice testcase
+          by Clément Calmels.
+
+3.2  Fri May  9 18:52:23 CEST 2008
+	- include a workaround for failing POSIX and real-world compliance
+          on 64 bit windows (microsoft claims to support POSIX, but is far
+          from it). (bug found and analysed nicely by John Lilley).
+
+3.1  Fri Nov 30 11:33:04 CET 2007
+	- IMPORTANT BUGFIX: a too long final literal run would corrupt data
+          in the encoder (this was introduced in 3.0 only, earlier versions
+          are safe).
+
+3.0  Tue Nov 13 22:13:09 CET 2007
+	- switched to 2-clause bsd with "GPL v2 or any later version" option.
+        - speed up compression by ~10-15% in common cases
+          by some manual unrolling.
+        - import some compiler tricks from JSON::XS, for further speed-ups.
+        - tune hash functions depending on ULTRA_FAST or VERY_FAST settings.
+        - for typical binary data (e.g. /bin/bash, memory dumps,
+          canterbury corpus etc.), speed is now comparable to fastlz, but
+          with better compression ratio. with ULTRA_FAST, it's typically
+          3-15% faster than fastlz while still maintaining a similar ratio.
+          (amd64 and core 2 duo, ymmv). thanks a lot for the competition :)
+        - undo inline assembly in compressor, it is no longer helpful.
+        - no changes to the decompressor.
+        - use a HLOG of 16 by default now (formerly 15).
+
+2.1  Fri Nov  2 13:34:42 CET 2007
+	- switched to a 2-clause bsd license with GPL exception.
+	- get rid of memcpy.
+        - tentatively use rep movsb on x86 and x86_64 (gcc only) for a
+          moderate speed improvement.
+        - applied patch by Kein-Hong Man to maske lzf.c compile under
+          the crippled mingw32 environment.
+
+2.0  Fri Feb 16 23:11:18 CET 2007
+	- replaced lzf demo by industrial-strength lzf utility with behaviour
+          similar other compression utilities. Thanks for Stefan Traby for
+          rewriting it!
+        - fix state arg prototype.
+
+1.7  Wed Sep 27 17:29:15 CEST 2006
+	- remove bogus "unlzf" patch.
+          note to self: never accept well-meant patches.
+	- make lzf more robust in presence of padding bytes or sudden eof.
+
+1.6  Fri Jul  7 17:31:26 CEST 2006
+	- the lzf example utility will now uncompress if invoked
+          as "unlzf" (patch by Scott Feeney).
+        - add CHECK_INPUT option that adds more checks for input
+          data validity.
+        - help applications that do not pass in the correct length
+          (such as php) by returning either EINVAL or E2BIG.
+        - default HLOG size is now 15 (cpu caches have increased).
+        - documentation fixes.
+
+1.51 Thu Apr 14 22:15:46 CEST 2005
+	- incorporated C♯ implementation of both the en- and decoder,
+          written by "Oren J. Maurice".
+          You can find it in the cs/ subdirectory.
+        - make FRST, NEXT IDX overridable if lzf_c.c is directly included
+          in the code.
+
+1.5  Tue Mar  8 20:23:23 CET 2005
+	- incorporated improvements by Adam D. Moss,
+          which includes a new VERY_FAST mode which is
+          a bit slower than ULTRA_FAST but much better,
+          and enabled it as default.
+
+1.401 Thu Mar  3 18:00:52 CET 2005
+	- use cstring in c++, not string.h.
+        - change of contact address.
+
+1.4  Wed Dec 15 08:08:49 CET 2004
+	- very very slight tuning of the hashing function.
+
+1.3  Thu Mar 25 15:41:17 CET 2004
+	- changed license of lzf core code to explicitly allow
+          relicensing under the GPLv2.
+	- added VPATH support as suggested by Björn Eriksson.
+
+1.2  Mon Dec 29 13:47:28 CET 2003
+	- avoid spurious memory accesses after the to-be-compressed
+          memory region. originally reported by Michal Zalewski.
+        - flip LZF_STACK_ARG meaning (to be correct).
+
+1.1  Tue Dec 23 05:48:32 CET 2003
+	- removed #warn directive, it's not worth the hassle.
+        - add LZF_STACK_ARG and AVOID_ERRNO configurations
+          for embedded systems.
+        - make it compile cleanly as c++.
+        - some small documentation and code fixes.
+
+1.0  Sun Nov 17 12:37:37 CET 2002
+	- slightly better compression ratio, almost unmeasurably
+          slower.
+        - some documentation fixes.
+
+0.4  Thu Jun 13 14:11:10 CEST 2002
+	- typoe fix.
+        - lzf demo program now properly decompresses small files.
+        - fix another 64 bit issue, found by Laurent Deniel.
+
+0.3  Tue Jan 16 13:21:14 CET 2001
+	- fix silly beginners 32/64 bit mistake.
+
+0.2  Thu Jan  4 05:56:42 CET 2001
+	- now totally independent of autoconfig, for
+          easy inclusion into other programs.
+        - much better fine-tuning, faster and better than 0.1.
+
+0.1  2000
+	- initial release.