130 lines
3.9 KiB
Plaintext
130 lines
3.9 KiB
Plaintext
# @(#)README 5.3 (Berkeley) 2/22/91
|
|
|
|
This package implements a superset of the hsearch and dbm/ndbm libraries.
|
|
|
|
Contents:
|
|
|
|
Hashing Package:
|
|
dynahash.c
|
|
page.c
|
|
buf.c
|
|
big.c
|
|
hfunc.c
|
|
log2.c
|
|
|
|
hash.h
|
|
page.h
|
|
db.h
|
|
|
|
Backward Compatibility Routines:
|
|
ndbm.c
|
|
ndbm.h
|
|
hsearch.c
|
|
search.h
|
|
|
|
Misc:
|
|
byte_order.c
|
|
|
|
Compatibility routines:
|
|
mkstemp.c
|
|
|
|
ansi.h
|
|
bsd.h
|
|
cdefs.h
|
|
endian.h
|
|
posix.h
|
|
unistd.h
|
|
|
|
DIFFS:
|
|
These are diffs since the date of the file (i.e. a file labeled
|
|
DIFFS.2.12 are the diffs since the 2.12 version on arpa). The
|
|
date of the DIFF file indicates when those diffs were installed.
|
|
|
|
Test Programs:
|
|
All test programs which need key/data pairs expect them entered
|
|
with key and data on separate lines
|
|
|
|
tcreat3.c
|
|
Takes
|
|
bucketsize (bsize),
|
|
fill factor (ffactor), and
|
|
initial number of elements (nelem).
|
|
Creates a hash table named hashtest containing the
|
|
keys/data pairs entered from standard in.
|
|
thash4.c
|
|
Takes
|
|
bucketsize (bsize),
|
|
fill factor (ffactor),
|
|
initial number of elements (nelem)
|
|
bytes of cache (ncached), and
|
|
file from which to read data (fname)
|
|
Creates a table from the key/data pairs on standard in and
|
|
then does a read of each key/data in fname
|
|
tdel.c
|
|
Takes
|
|
bucketsize (bsize), and
|
|
fill factor (ffactor).
|
|
file from which to read data (fname)
|
|
Reads each key/data pair from fname and deletes the
|
|
key from the hash table hashtest
|
|
tseq.c
|
|
Reads the key/data pairs in the file hashtest and writes them
|
|
to standard out.
|
|
tread2.c
|
|
Takes
|
|
butes of cache (ncached).
|
|
Reads key/data pairs from standard in and looks them up
|
|
in the file hashtest.
|
|
tverify.c
|
|
Reads key/data pairs from standard in, looks them up
|
|
in the file hashtest, and verifies that the data is
|
|
correct.
|
|
|
|
NOTES:
|
|
|
|
If you are not running a 4.3BSD-Reno or later system, you may need to use
|
|
some of the compatibility files provided. The files are as follows:
|
|
|
|
mkstemp.c Mkstemp/mktemp library routine.
|
|
|
|
ansi.h Map bcopy and friends to memcpy and friends.
|
|
bsd.h Map various new BSD things to old things.
|
|
cdefs.h Handle the function prototypes in other include files.
|
|
endian.h Handle byte ordering. Be sure to set BYTE_ORDER in
|
|
endian.h appropriately for your machine. If you don't
|
|
know what "endian" your machine is, compile
|
|
byte_order.c and run it. It should tell you.
|
|
posix.h Map various POSIX 1003.1 things to old-style things.
|
|
unistd.h POSIX 1003.1 definitions.
|
|
|
|
If you are not running on the current BSD release (4.3BSD-Reno+), you will
|
|
need to include bsd.h in hash.h. Depending on what system you are running
|
|
on, you will need to add the other compatibility h files in hash.h.
|
|
|
|
The file search.h is provided for using the hsearch compatible interface
|
|
on BSD systems. On System V derived systems, search.h should appear in
|
|
/usr/include.
|
|
|
|
The man page db.3 explains the interface to the hashing system.
|
|
The file hash.ps is a postscript copy of a paper explaining
|
|
the history, implementation, and performance of the hash package.
|
|
|
|
"bugs" or idiosyncracies
|
|
|
|
If you have a lot of overflows, it is possible to run out of overflow
|
|
pages. Currently, this will cause a message to be printed on stderr.
|
|
Eventually, this will be indicated by a return error code.
|
|
|
|
If you are using the ndbm interface and exit without flushing or closing the
|
|
file, you may lose updates since the package buffers all writes. Also,
|
|
the db interface only creates a single database file. To avoid overwriting
|
|
the user's original file, the suffix ".db" is appended to the file name
|
|
passed to dbm_open. Additionally, if your code "knows" about the historic
|
|
.dir and .pag files, it will break.
|
|
|
|
There is a fundamental difference between this package and the old hsearch.
|
|
Hsearch requires the user to maintain the keys and data in the application's
|
|
allocated memory while hash takes care of all storage management. The down
|
|
side is that the byte strings passed in the ENTRY structure must be null
|
|
terminated (both the keys and the data).
|