Annotation of researchv10dc/man/adm/man3/dbm.3, revision 1.1.1.1

1.1       root        1: .TH DBM 3X
                      2: .CT 2 data_man
                      3: .SH NAME
                      4: dbminit, fetch, store, delete, firstkey, nextkey \(mi database subroutines
                      5: .SH SYNOPSIS
                      6: .nf
                      7: .B dbminit(file)
                      8: .B char *file;
                      9: .PP
                     10: .B datum fetch(key)
                     11: .B datum key;
                     12: .PP
                     13: .B store(key, value)
                     14: .B datum key, value;
                     15: .PP
                     16: .B delete(key)
                     17: .B datum key;
                     18: .PP
                     19: .B datum firstkey()
                     20: .PP
                     21: .B datum nextkey(key)
                     22: .B datum key;
                     23: .SH DESCRIPTION
                     24: These functions maintain
                     25: key/value pairs (each pair is a
                     26: .IR datum )
                     27: in a data base.
                     28: The functions will handle very large databases
                     29: in one or two file system accesses per key.
                     30: The functions are loaded
                     31: with
                     32: .IR ld (1)
                     33: option
                     34: .BR -ldbm .
                     35: A datum is defined as
                     36: .IP
                     37: .EX
                     38: .ta \w'typedef 'u +\w'struct 'u
                     39: typedef        struct  {
                     40:        char    *dptr;
                     41:        int     dsize;
                     42: } datum;
                     43: .EE
                     44: .PP
                     45: A
                     46: .B datum
                     47: object specifies a string of
                     48: .B dsize
                     49: bytes pointed to by
                     50: .BR dptr .
                     51: Arbitrary binary data, as well as normal
                     52: ASCII strings, are allowed.
                     53: The data base is stored in two files.
                     54: One file is a directory containing a bit map
                     55: and has
                     56: .L .dir
                     57: as its suffix.
                     58: The second file contains all data and
                     59: has
                     60: .L .pag
                     61: as its suffix.
                     62: .PP
                     63: Before a database can be accessed,
                     64: it must be opened by
                     65: .I dbminit.
                     66: At the time of this call,
                     67: the files
                     68: .IB file .dir
                     69: and
                     70: .IB file .pag
                     71: must exist.
                     72: (An empty database has empty
                     73: .L .dir
                     74: and
                     75: .L .pag
                     76: files.)
                     77: .PP
                     78: The value associated with a key is
                     79: retrieved by
                     80: .I fetch
                     81: and assigned by
                     82: .IR store .
                     83: A key and its associated value
                     84: are deleted by
                     85: .IR delete .
                     86: A linear pass through all keys in a database
                     87: may be made,
                     88: in random order,
                     89: by use of
                     90: .I firstkey
                     91: and
                     92: .IR nextkey .
                     93: .I Firstkey
                     94: will return the first key
                     95: in the database.
                     96: With any key
                     97: .I nextkey
                     98: will return the next key in the database.
                     99: This code will traverse the data base:
                    100: .IP
                    101: .L
                    102: for(key = firstkey(); key.dptr != NULL; key = nextkey(key))
                    103: .SH SEE ALSO
                    104: .IR cbt (3)
                    105: .SH DIAGNOSTICS
                    106: All functions that return integers
                    107: indicate errors with negative values.
                    108: A zero return indicates success.
                    109: Routines that return a
                    110: .B datum
                    111: indicate errors with zero
                    112: .BR dptr .
                    113: .SH BUGS
                    114: The
                    115: .L .pag
                    116: file contains holes;
                    117: its apparent size is about
                    118: four times its actual content.
                    119: These files cannot be copied
                    120: by normal means
                    121: .RI ( cat (1),
                    122: .IR tar (1),
                    123: .IR cpio (1),
                    124: .IR ar (1))
                    125: without filling in the holes.
                    126: .br
                    127: Pointers returned
                    128: by these subroutines
                    129: refer to static data
                    130: that is changed by subsequent calls.
                    131: .br
                    132: The sum of the sizes of
                    133: a
                    134: key/value pair must not exceed
                    135: a fixed internal block size.
                    136: Moreover all key/value pairs that hash
                    137: together must fit on a single block.
                    138: .I Store
                    139: will return an error in the event that
                    140: a disk block fills with inseparable data.
                    141: .br
                    142: .I Delete
                    143: does not physically reclaim file space,
                    144: although it does make it available for reuse.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.