This is a port of GNU Gperf 3.0.1 to MSDOS/DJGPP.
The binaries, docs and surces can be downloaded from delorie.com as:
GNU gperf is a program that generates perfect hash functions for sets
of key words. A perfect hash function is:
A hash function and a data structure that allows
recognition of a key word in a set of words using
exactly 1 probe into the data structure.
The gperf.info and gperf.html files explain how the program works,
the form of the input, what options are available, and hints on choosing
the best options for particular key words set.
See the file NEWS for a list of major changes in the current release.
DJGPP specific changes.
There are no DJGPP specific changes to the sources at all.
Only a couple of testsuit files need a minor changes to get the testsuit
working under Win9X/MSDOS. The changes are performed by tscript.sed.
I have only added the usual DJGPP subdirectory, that contains the batch
file and sed scripts needed to configure, compile and test the package.
Some remarks about building the binaries from sources.
Please not that source code is almost completely written in C++,
so you will need to install the C++ compiler if you want to re-
compile the sources.
See the readme file in the DJGPP subdir for a complete list of the
If you run the testsuit with the command 'make check' you will get
output lines similar to this one:
./src/gperf -p -D -k1,'$' -s 2 -o ./adadefs.gperf > preinset.c
1 input keys have identical hash values, examine output carefully...
This is neither a bug in the DJGPP port nor in the original gperf sources.
The above warning is triggered by the '-D' option that allows to build
non-perfect hash tables, i.e with collisions.
There is a second issue that should be observed: If the testsuit breaks
because the lu2out.exe program dies with a SISEGV, then you have used
an unzip program that "silently" transforms UNIX-style EOL into
MSDOS-style EOL (this is typical for WinZIP). This implies that the
file lang-ucs2.in has been corrupted. This is a **binary** file that
should not be modified. In this case unzip the sources again, this time
using djtar.exe, in some temporary directory an replace the broken
lang-ucs2.in with the new one and run the command 'make check' again.
No test of the testsuit should fail.
Please read the docs to become familiar with this binary.
Send suggestions and bug reports concerning the DJGPP port to