Lick was a project I dabbled with many years ago as an experiment in Burrows-Wheeler Transform (BWT) based compression. It is an exension of work I did in the second year of a Software Engineering degree. The original work has long since been lost. I present it here for educational purposes.
It is written in ANSI C99 and should compile on any UNIX like system. There is provision for platform specific code and there seems to be some support for Amiga FFS protection bits.
Compilation is best achieved with the make command. A Makefile is provided.
The binaries produced by the make procedure are primarily flick and lick.
flick is a file compressor, producing files with the .flk file extension.
lick is a file archiver although this seems to be unfinished. Primarily, the
compression code, as used in flick, has not been plumbed in. It should be
easy to add.
Both flick and lick support GNU style options. Use -h for the available
help.
Other files left in the bin/ folder as a result of make are testing
binaries. Two scripts, in the project's root folder, are provided to help
automate testing.
TEST with the argument all will test each component of the compression
library "chain" (see below).
FLICK_TEST runs the flick binary and compresses/decompresses the contents of
the text.compression.corpus directory. If my memory is correct, this is the
Calgary Corpus
The compression method employed by the project is the BWT with a pre RLE
stage; a MTF stage and post-RLE stage. Output is huffman encoded.
Research has no doubt moved on a lot since 2001 and the method outlined above
was by no means state-of-the-art even then. I experimented with range encoding as an alternative but have removed that code from this release
because it failed the tests when I tried.
I still have printed copies of the papers I was using to help me. There may have been others, but these are the ones I still have references to.
A Block-sorting Lossless Data Compression Algorithm
M. Burrows and D. J. Wheeler
May 10 1994
Modifications of the Burrows and Wheeler Data Compression Algorithm
Balkenhol, Kurtz, Shtarkov
March 1999
Second Step Algorithms In The Burrows-Wheeler Compression Algorithm
Sebastian Deorowicz
November 22 2001
Reflections of the Burrows Wheeler transform
Fenwick
July 2004
Interestingly, the last two papers post-date the date string in the version.h
file. This suggests I did more work on this project after 2001. If given the
opportunity I will look further on old hard drives for any updates