|
Goodies
JNIPort
Z-Kit
ListTree
Space Breakdown
F.M.B.
Ghoul
Miscellanea
Experiments
Changes
Prerequisites
Licence
|
This collection of packages provides facilities for handling compressed data; including
ZIP file handling, and streaming [de]compression using zlib, gzip, or bzip2. It also includes
the ability to read and write UNIX tar files.
The [de]compression itself is provided by two external DLLs.
The zlib library is used for
zlib compression (aka “Deflate” compression) and gzip compression (which is
just the same compression algorithm with different headers and trailers on the data).
The bzip2 library is
used for (surprise!) bzip2 compression. BZip2 uses a block compression algorithm which
often provides superior compression to zlib, albeit at some cost in time and memory.
Many thanks to by Jean-loup Gailly and Mark Adler, the authors of zlib, and
to Julian Seward, who wrote libbzip2, for making these remarkably useful libraries available.
I don't include the DLLs themselves in this download; that seems to be the easiest way to
ensure that I am complying with the conditions on redistribution (not that those conditions are
in any way onerous for either library). Much more importantly, it ensures that I am not
distributing a corrupt or out-of-date version of the DLLs. My code was all developed using
zlib version 1.2.1, and libbzip2 version 1.0.0.
To use zlib or gzip compression (which is also used by Zip files) you will need a copy
of ZLIB1.DLL, which is the official build of zlib for Windows (there are confusingly
many other builds — see the zlib
FAQ). ZLIB1.DLL is available
pre-built for Windows here (about half-way
down the page). You should put it somewhere that Dolphin can find it, either on your %PATH% or
in the Dolphin installation folder.
To use bzip2 compression you will need a copy of LIBBZ2-1.?.?.DLL. That DLL is available pre-built
for Windows here
(for some reason, the link is in the middle of the “Getting an older version” section).
You will have to rename it to LIBBZ2-1.DLL, and should put it somewhere that Dolphin can find it,
either on your %PATH% or in the Dolphin installation folder.
The packages are:
- ZLib Base
-
A low-level wrapper for the zlib library, ZLIB1.DLL. This exposes the whole of
the zlib API except the plethora of functions for treating gzip files like 'C'
<stdio> (for which I can see little use in Smalltalk).
- ZLib Streams
-
Three Stream classes built on top of zlib compression.
Two kinds of write stream; these are filters that are attached to another
WriteStream and either compress or decompress
the data they receive before forwarding it to the underlying stream.
A decompressing read stream. This is attached to an existing
ReadStream supplying compressed data, and decompresses
it as you read. This also provides a configurable amount of “push back” data,
in order to support algorithms that require limited read-ahead
(#nextLine and #nextWord,
for instance).
These streams can be configured to use the various formats and compression levels provided
by zlib, including most of the “advanced” features of that library.
- ZLib Streams Extras
-
A few trivial loose methods to supplement the ZLib Streams package.
- BZip2 Base
-
A low-level wrapper for the bzip2 library, BZIP2-1.DLL. Like ZLib Base, this exposes
the whole of the bzip2 API except the functions for handling disk files directly.
- BZip2 Streams
-
Three Stream classes built on top of bzip2 compression. These follow exactly the
same pattern as the ZLib Streams, with compressing and decompressing
WriteStreams, and a decompressing
ReadStream.
- ZipFiles
-
This package uses the ZLib streams to read or write ZIP files. It is particularly aimed
at manipulating such files in memory, i.e. without having to extract files to disk to
read them. Similarly you can add data directly to a Zip file without writing it to a
temporary file first.
It cannot handle all possible types of Zip file; it doesn't handle encryption, nor Zip
archives spanning several “media” (I hate that use of the word). Also, it
only understands “Deflate” compression, which is what zlib provides.
It does also understand “Stored”, i.e. uncompressed, entries as well,
but that's easy… There are several other compression formats that are part of
the Zip file specification and which can be used by the real PKWare utilities, but those
formats seem to be rare in practise — I have never seen them myself.
It can create new Zip files (as real files on disk, or as binary data in memory) and
read existing files. It can also append new data to an existing file, but it
does not have the ability to make arbitrary changes in-place (though it is easy enough
to create a copy, applying any desired modifications as you go).
- ZipFile Tree Model
-
Simple adaptor for using a ZipFile as the Model for a TreeView
or ListTreeView.
- TarFiles
-
This package allows you to read or write UNIX tar files. The usage is very similar
(though not quite identical, unfortunately) to that of the ZIP files. When used
in conjuction with the Zlib streams, or BZip2 streams, this package can also be used
to read and write compressed tar files (sometimes known as tarballs).
- ZipFile Tree Model
-
Simple adaptor for using a TarFile as the Model for a TreeView
or ListTreeView.
Packages
Package sizes and versions
| Name |
Size |
Version |
| CU ZLib Base |
76877 |
1.00 |
| CU ZLib Base Tests |
5829 |
1.01 |
| CU ZLib Streams |
108533 |
2.00 |
| CU ZLib Streams Extras |
3698 |
1.00 |
| CU ZLib Streams Tests |
35941 |
1.01 |
| CU BZip2 Base |
23432 |
1.01 |
| CU BZip2 Base Tests |
6928 |
1.00 |
| CU BZip2 Streams |
91202 |
2.01 |
| CU BZip2 Streams Tests |
30125 |
1.01 |
| CU ZipFiles |
149792 |
3.00 |
| CU ZipFile Tree Model |
11904 |
1.02 |
| CU ZipFiles Tests |
14567 |
2.00 |
| CU TarFiles |
63242 |
1.02 |
| CU TarFile Tree Model |
13298 |
1.00 |
| CU TarFiles Tests |
14815 |
1.00 |
|