Kunzip 2006-11-14 review
DownloadKunzip is a free (but not opensource) library for decompressing ZIP archives
|
|
Kunzip is a free (but not opensource) library for decompressing ZIP archives. Kunzip started out as a test program I wrote for decompressing .zip files through a command line program.
I eventually added hooks to make it a DLL that can be used from Windows programs. It is also possible to compile it for Unix (and Unix-like OS's such as Linux) as a .so library.
My plan for the kunzip.dll was to make it as simple to use as possible so it can even be used from VisualBasic or such. It should be fully compatible with zipfiles created by InfoZip, PkZip, and WinZip. You can download it from the link below and view the prototypes for different languages that can call kunzip.dll.
I originally started this code to be able to decompress (and maybe even compress) PNG graphic files. Since this is the same algorithm used in gzip and zip (WinZip, InfoZip, etc), I decided to make it work with .zip files instead. Unfortunately, all the specs I had for this compression were for PNG and Zip is slightly different, so I had some problems getting it working :).
My first version kunzip (which built the huffman tables using arrays instead of trees and did a lot of fseeking) ran painfully slow, but my latest version runs quite well. One interesting thing I found, when I did static huffman decompression for TIFF, I did it using lookup tables instead of trees. This actually ran very fast, altho I'm not sure of the speed difference if I used trees instead. On this project, I started out doing all 3 huffman sets using lookup tables.
After I saw how slow it ran, I switched the length huffman codes to a tree and the decompression ran almost double the speed. When I changed the distance huffman codes to trees, the decompression slowed down by a few seconds. So I left length/distance huffman codes as trees and kept the first huffman codes as lookup tables. I may try and improve on the speed even more later.
Not only can you download the source code which can be compiled on both Unix/Linux and Windows, but I've also included a Windows DLL I built for doing unzipping. I think it is quite easy to use, so if you need an unzip library for Windows, feel free to use this (feel free to make a donation to my PayPal account too if you like.
Btw, this code was written to be compiled on Unix (Linux,FreeBSD,etc) systems. If you want to build the DLL, you can download the source code and type: make dll. The mingw C compiler needs to be used. I'm 99% sure I did some things that don't work in Visual C++. I may make it compile to a Unix shared lib too for fun.
The original May 6, 2005 version of kunzip decompresses a 120meg file in about 3min40sec on my AMD Athlon XP box. Since then, I put some major optomizations in and it now decompresses the same file in 20 seconds.
What's New in This Release:
The license has been changed to the LGPL.
Kunzip 2006-11-14 search tags