Notes on WinHelp format, part 3

This post is part of a series about WinHelp file format. Please read the other parts first: Part 1Part 2 With what we learned previously, we can decompress the TOPIC blocks, locate the TOPICLINKs, and stitch each TOPICLINK's fragments together to make each TOPICLINK a contiguous blob of bytes: A defragmented TOPICLINK is composed of … Continue reading Notes on WinHelp format, part 3

Another Implode bug in old PKZIP software

In a previous post, I discussed an old PKZIP bug related to the compression method named "Implode". I'll call that bug the "MML bug", for "Minimum Match Length". [See also a later post: Bug #3.] In this post, I'll discuss another old PKZIP bug related to Implode compression, mainly just to distinguish it from that … Continue reading Another Implode bug in old PKZIP software

Notes on WinHelp format, part 1

I wanted to write a program to extract the text from WinHelp .HLP files. HLP format was the standard Microsoft Windows help/documentation file format from around 1990 (the start of the Windows 3.x era), through the early 2000s. There are countless old Windows applications that come with an HLP file, but starting with Vista, Windows … Continue reading Notes on WinHelp format, part 1

What is the name of libjpeg?

Shortly after the development of the JPEG image format around 1991, an organization named the Independent JPEG Group (IJG) released an open source software package to help people use the format. While the software included a few utilities, such as cjpeg and djpeg, the important part of it was its C library. The library became … Continue reading What is the name of libjpeg?

Investigating an UnZip decompression bug

One of the old compression methods for ZIP format is named "Shrink". In the process of writing my own Shrink decompressor, I came across a problem with the Info-ZIP UnZip software. It's triggered by a small percentage of Shrink-compressed files. As an example, I'll use the file that you can download here: BLING.WAV. Now, in … Continue reading Investigating an UnZip decompression bug

PKZIP “Implode” compression oddity

When I was researching old versions of PKZIP, I found that modern unzip programs aren't able to unzip the PKZIP v1.01 distribution file. Three of the member files inside the self-extracting ZIP file fail to decompress correctly. /cygdrive/c/dosprogs/ZIPTEST/101 $ unzip ../DIST/PKZ101.EXE exploding: README.DOC warning: 475 bytes required to uncompress to 873 bytes; supposed to require … Continue reading PKZIP “Implode” compression oddity

Survey of ZIP APPNOTE documents

[2019-09-21: I've edited this document to include some new discoveries.] I already wrote an article about the version history of the PKZIP software, so now it's time for one about the version history of the ZIP format. That sounds like it should be easy, but… not so much. I think the format versions are more … Continue reading Survey of ZIP APPNOTE documents