From c3a96a3682bbe33407df3ef723875fcbbd942d07 Mon Sep 17 00:00:00 2001 From: "William F. Jolitz" Date: Fri, 22 Feb 1991 10:11:33 -0800 Subject: [PATCH] 386BSD 0.1 development Work on file usr/src/lib/libc/db/hash/README Co-Authored-By: Lynne Greer Jolitz Synthesized-from: 386BSD-0.1 --- usr/src/lib/libc/db/hash/README | 129 ++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 usr/src/lib/libc/db/hash/README diff --git a/usr/src/lib/libc/db/hash/README b/usr/src/lib/libc/db/hash/README new file mode 100644 index 0000000000..971d037446 --- /dev/null +++ b/usr/src/lib/libc/db/hash/README @@ -0,0 +1,129 @@ +# @(#)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). -- 2.20.1