386BSD 0.1 development
authorWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Fri, 22 Feb 1991 18:11:33 +0000 (10:11 -0800)
committerWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Fri, 22 Feb 1991 18:11:33 +0000 (10:11 -0800)
Work on file usr/src/lib/libc/db/hash/README

Co-Authored-By: Lynne Greer Jolitz <ljolitz@cardio.ucsf.edu>
Synthesized-from: 386BSD-0.1

usr/src/lib/libc/db/hash/README [new file with mode: 0644]

diff --git a/usr/src/lib/libc/db/hash/README b/usr/src/lib/libc/db/hash/README
new file mode 100644 (file)
index 0000000..971d037
--- /dev/null
@@ -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).