|
| 1 | +CHMLIB 0.37 |
| 2 | +=========== |
| 3 | + |
| 4 | +------- |
| 5 | +SUMMARY |
| 6 | +------- |
| 7 | +chmlib is a small library designed for accessing MS ITSS files. The ITSS file |
| 8 | +format is used for Microsoft Html Help files (.chm), which have been the |
| 9 | +predominant medium for software documentation from Microsoft during the past |
| 10 | +several years, having superceded the previously used .hlp file format. |
| 11 | + |
| 12 | +Note that this is NOT the same as the OLE structured storage file format used |
| 13 | +by MS Excel, Word, and so on. Instead, it is a different file format which |
| 14 | +fulfills a similar purpose. Both file formats may be accessed via instances |
| 15 | +of the IStorage COM interface, which is essentially an "acts like a |
| 16 | +filesystem" interface. |
| 17 | + |
| 18 | +------- |
| 19 | +FILE FORMAT SUPPORT |
| 20 | +------- |
| 21 | + |
| 22 | +Lookup of files in the archive is supported, and should be relatively quick. |
| 23 | +Reading of files in the archive is also supported. |
| 24 | +Writing is not supported, but may be added in the future. |
| 25 | + |
| 26 | +In terms of support for the ITSS file format, there are a few places in which |
| 27 | +the support provided by this library is not fully general: |
| 28 | + |
| 29 | +1. ITSS files whose names contain UTF-8 characters which are not part of the |
| 30 | + ASCII subset will not currently be dealt with gracefully. Currently, the |
| 31 | + filenames are not converted from UTF-8, but are instead returned as-is. I'm |
| 32 | + very interested in hearing any suggestions as to the "right" way to handle |
| 33 | + this. |
| 34 | + |
| 35 | +2. Only version 3 ITSS files are supported at present, though some work has |
| 36 | + gone towards divining the differences between different versions of the |
| 37 | + file format. It is possible that version 2 ITSS files might work properly |
| 38 | + with this library, but unconfirmed. |
| 39 | + |
| 40 | +3. Archives larger than 4 GB should be supported just fine, but if they |
| 41 | + contain files larger than 4GB, this library may break. Fortunately, this |
| 42 | + seems somewhat unlikely. |
| 43 | + |
| 44 | +If you run into .chm files (or files you suspect are ITSS files) that this |
| 45 | +library doesn't work with, please contact me so I can fix the library. |
| 46 | + |
| 47 | +------- |
| 48 | +PORTABILITY |
| 49 | +------- |
| 50 | + |
| 51 | +This software was originally developed on a Intel x86 Debian Linux machine, |
| 52 | +using gcc 3.0. It has since been compiled on various flavors of RedHat as |
| 53 | +well, and using versions of gcc from 2.95 through 3.2. Basic Win32 support |
| 54 | +should be in this release. (While a port to Win32 may _seem_ like a funny |
| 55 | +idea, given that Windows ships with libraries for CHM access, it turns out that |
| 56 | +Win CE does not; I've gotten a request for a port to Windows CE.) |
| 57 | + |
| 58 | +Chmlib apparently works on OS X, with some tweaks. In particular, disabling |
| 59 | +pread and io64 apparently works. |
| 60 | + |
| 61 | +Finally, Andrew Hodgetts has ported to Solaris and IRIX: |
| 62 | + |
| 63 | +On Monday, 7 Oct 2002, Andrew Hodgetts wrote: |
| 64 | +> Solaris(Sun): |
| 65 | +> |
| 66 | +> I used both SunProC and GCC on the solaris machines to compile. They |
| 67 | +> both worked ok. |
| 68 | +> However, both required -lsocket on the link line of the Makefile or you |
| 69 | +> recieve linking errors. |
| 70 | +> |
| 71 | +> I have this working on CPUs ranging from Sun4m (Sparc5) through to |
| 72 | +> UltraSparcIII (SunFireV880). |
| 73 | +> |
| 74 | +> Irix (SGI): |
| 75 | +> |
| 76 | +> I only testing with the MIPS compiler (not GCC). All worked ok - lots of |
| 77 | +> warning messages, but it always does that. |
| 78 | + |
| 79 | +He further noted that: |
| 80 | + |
| 81 | +> ... for NON GCC compilers, a little tweaking may be required, but nothing too |
| 82 | +> complex. ie SunProC doesn't understand -fPIC for library building. Irix |
| 83 | +> required -n32 (new 32bit libraries) etc. These are things that someone who |
| 84 | +> uses the OS and compiler should be used to dealing with. |
| 85 | + |
| 86 | +------- |
| 87 | +CREDITS |
| 88 | +------- |
| 89 | + |
| 90 | +* Stuart Caie: the LZX decompression code, and for granting permission to |
| 91 | + re-license under the LGPL. |
| 92 | + |
| 93 | +* Sven Tantau: identification of a stack-overflow security flaw and a quick fix |
| 94 | + for the problem. |
| 95 | + |
| 96 | +* iDEFENSE Labs: identification of a nasty stack-overflow security flaw |
| 97 | + |
| 98 | +* Palasik Sandor: identification of a potential security flaw in lzx.c as well |
| 99 | + as a quick fix for the problem |
| 100 | + |
| 101 | +* David Huseby: An excellent patch to the chm_enumerate functionality, relating |
| 102 | + to the "what" flags, which didn't work entirely correctly before |
| 103 | + |
| 104 | +* Vadim Zeitlin: Configure script cleanup, including an important update to |
| 105 | + allow detection of platforms where pread64 doesn't work. (OS X) |
| 106 | + |
| 107 | +* Vitaly V. Bursov: Compilation on x86-64. |
| 108 | + |
| 109 | +* mc: A suggestion to add a "mkdir" to the install step. |
| 110 | + |
| 111 | +* Stan Tobias: bugfixes and the added 'index page' feature of chm_http. |
| 112 | + |
| 113 | +* Andrew Hodgetts: porting to Solaris and IRIX, as well as fixing some |
| 114 | + little-endian biases in the code. |
| 115 | + |
| 116 | +* Rich Erwin: Windows CE support. |
| 117 | + |
| 118 | +* Pabs: bug fixes and suggestions. |
| 119 | + |
| 120 | +* Antony Dovgal: setting up autoconf/automake based build process. |
| 121 | + |
| 122 | +* Ragnar Hojland Espinosa: patches to make chm_http more useful. |
| 123 | + |
| 124 | +* Razvan Cojocaru: forwarding along information regarding building on OS X. |
| 125 | + |
| 126 | +* Julien Lemoine: creating and maintaining the Debian package of chmlib. |
| 127 | + |
| 128 | +* Anyone else I've forgotten. (?) |
| 129 | + |
0 commit comments