You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
5.1 KiB
142 lines
5.1 KiB
15 years ago
|
CHMLIB 0.38
|
||
|
===========
|
||
|
|
||
|
-------
|
||
|
SUMMARY
|
||
|
-------
|
||
|
chmlib is a small library designed for accessing MS ITSS files. The ITSS file
|
||
|
format is used for Microsoft Html Help files (.chm), which have been the
|
||
|
predominant medium for software documentation from Microsoft during the past
|
||
|
several years, having superceded the previously used .hlp file format.
|
||
|
|
||
|
Note that this is NOT the same as the OLE structured storage file format used
|
||
|
by MS Excel, Word, and so on. Instead, it is a different file format which
|
||
|
fulfills a similar purpose. Both file formats may be accessed via instances
|
||
|
of the IStorage COM interface, which is essentially an "acts like a
|
||
|
filesystem" interface.
|
||
|
|
||
|
-------
|
||
|
FILE FORMAT SUPPORT
|
||
|
-------
|
||
|
|
||
|
Lookup of files in the archive is supported, and should be relatively quick.
|
||
|
Reading of files in the archive is also supported.
|
||
|
Writing is not supported, but may be added in the future.
|
||
|
|
||
|
In terms of support for the ITSS file format, there are a few places in which
|
||
|
the support provided by this library is not fully general:
|
||
|
|
||
|
1. ITSS files whose names contain UTF-8 characters which are not part of the
|
||
|
ASCII subset will not currently be dealt with gracefully. Currently, the
|
||
|
filenames are not converted from UTF-8, but are instead returned as-is. I'm
|
||
|
very interested in hearing any suggestions as to the "right" way to handle
|
||
|
this.
|
||
|
|
||
|
2. Only version 3 ITSS files are supported at present, though some work has
|
||
|
gone towards divining the differences between different versions of the
|
||
|
file format. It is possible that version 2 ITSS files might work properly
|
||
|
with this library, but unconfirmed.
|
||
|
|
||
|
3. Archives larger than 4 GB should be supported just fine, but if they
|
||
|
contain files larger than 4GB, this library may break. Fortunately, this
|
||
|
seems somewhat unlikely.
|
||
|
|
||
|
If you run into .chm files (or files you suspect are ITSS files) that this
|
||
|
library doesn't work with, please contact me so I can fix the library.
|
||
|
|
||
|
-------
|
||
|
PORTABILITY
|
||
|
-------
|
||
|
|
||
|
This software was originally developed on a Intel x86 Debian Linux machine,
|
||
|
using gcc 3.0. It has since been compiled on various flavors of RedHat as
|
||
|
well, and using versions of gcc from 2.95 through 3.2. Basic Win32 support
|
||
|
should be in this release. (While a port to Win32 may _seem_ like a funny
|
||
|
idea, given that Windows ships with libraries for CHM access, it turns out that
|
||
|
Win CE does not; I've gotten a request for a port to Windows CE.)
|
||
|
|
||
|
Chmlib apparently works on OS X, with some tweaks. In particular, disabling
|
||
|
pread and io64 apparently works.
|
||
|
|
||
|
Finally, Andrew Hodgetts has ported to Solaris and IRIX:
|
||
|
|
||
|
On Monday, 7 Oct 2002, Andrew Hodgetts wrote:
|
||
|
> Solaris(Sun):
|
||
|
>
|
||
|
> I used both SunProC and GCC on the solaris machines to compile. They
|
||
|
> both worked ok.
|
||
|
> However, both required -lsocket on the link line of the Makefile or you
|
||
|
> recieve linking errors.
|
||
|
>
|
||
|
> I have this working on CPUs ranging from Sun4m (Sparc5) through to
|
||
|
> UltraSparcIII (SunFireV880).
|
||
|
>
|
||
|
> Irix (SGI):
|
||
|
>
|
||
|
> I only testing with the MIPS compiler (not GCC). All worked ok - lots of
|
||
|
> warning messages, but it always does that.
|
||
|
|
||
|
He further noted that:
|
||
|
|
||
|
> ... for NON GCC compilers, a little tweaking may be required, but nothing too
|
||
|
> complex. ie SunProC doesn't understand -fPIC for library building. Irix
|
||
|
> required -n32 (new 32bit libraries) etc. These are things that someone who
|
||
|
> uses the OS and compiler should be used to dealing with.
|
||
|
|
||
|
-------
|
||
|
CREDITS
|
||
|
-------
|
||
|
|
||
|
* Stuart Caie: the LZX decompression code, and for granting permission to
|
||
|
re-license under the LGPL.
|
||
|
|
||
|
* Sven Tantau: identification of a stack-overflow security flaw and a quick fix
|
||
|
for the problem; identification of a possible security danger in the example
|
||
|
program "extract_chmLib"
|
||
|
|
||
|
* iDEFENSE Labs: identification of a nasty stack-overflow security flaw
|
||
|
|
||
|
* Palasik Sandor: identification of a potential security flaw in lzx.c as well
|
||
|
as a quick fix for the problem
|
||
|
|
||
|
* David Huseby: An excellent patch to the chm_enumerate functionality, relating
|
||
|
to the "what" flags, which didn't work entirely correctly before
|
||
|
|
||
|
* Vadim Zeitlin: Configure script cleanup, including an important update to
|
||
|
allow detection of platforms where pread64 doesn't work. (OS X)
|
||
|
|
||
|
* Vitaly V. Bursov: Compilation on x86-64.
|
||
|
|
||
|
* mc: A suggestion to add a "mkdir" to the install step.
|
||
|
|
||
|
* Stan Tobias: bugfixes and the added 'index page' feature of chm_http.
|
||
|
|
||
|
* Andrew Hodgetts: porting to Solaris and IRIX, as well as fixing some
|
||
|
little-endian biases in the code.
|
||
|
|
||
|
* Rich Erwin: Windows CE support.
|
||
|
|
||
|
* Pabs: bug fixes and suggestions.
|
||
|
|
||
|
* Antony Dovgal: setting up autoconf/automake based build process.
|
||
|
|
||
|
* Ragnar Hojland Espinosa: patches to make chm_http more useful.
|
||
|
|
||
|
* Razvan Cojocaru: forwarding along information regarding building on OS X.
|
||
|
|
||
|
* Julien Lemoine: creating and maintaining the Debian package of chmlib.
|
||
|
|
||
|
* Prarit Bhargava: Compilation on ia64
|
||
|
|
||
|
* Jean-Marc Vanel: elimination of compilation warnings in extract_chmLib
|
||
|
|
||
|
* Sisyphus & Matej Spiller-Muys: Compilation under MinGW32
|
||
|
|
||
|
* Kyle Davenport: helper script for using chm_http with mozilla
|
||
|
|
||
|
* Matthew Daniel & Mark Rosenstand: help to sort out issues with the build
|
||
|
system.
|
||
|
|
||
|
* Anyone else I've forgotten. (?)
|
||
|
|