+# @(#)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).