|
|
1.1 root 1: .SH NAME
2: bread, bwrite, bopen, bclose, bseek, bkey, bdelete, bfirst, bflush, breclen
3: .TH
4: cbt(3)
5: .SH SYNOPSIS
6: .nf
7: .B typedef struct { char *mdata; unsigned short mlen; } mbuf;
8: .B #include "cbt.h"
9: .B bfile *bopen(file, type) char *file;
10: .B bseek(bf, key) bfile *bf; mbuf key;
11: .B bfirst(bf) bfile *bf;
12: .B bclose(bf) bfile *bf;
13: .B breclen(bf) bfile *bf;
14: .B bread(bf, key, value) bfile *bf; mbuf *key, *value;
15: .B bdelete(bf, key) bfile *bf; mbuf key;
16: .B bflush(bf) bfile *bf;
17: .fi
18: .SH DESCRIPTION
19: These subroutines are the C interface to B-tree files.
20: Load them using
21: .I -lcbt.
22: The include file contains the definition of
23: .I mbuf.
24: B-trees may be shared by multiple readers and a single writer, since the effect of a writer's changes
25: are not seen until the root of the tree is written back.
26: Keys can be no longer than 255 bytes.
27: The routines communicate by means of
28: a
29: .I bfile
30: pointer returned by
31: .I bopen.
32: A B-tree named
33: .I file
34: corresponds to two
35: .UX
36: files,
37: .I file.T
38: and (if the file is not an index)
39: .I file.F.
40: The
41: .I type
42: parameter to
43: .I bopen
44: should be either 0 or 2, as in open (2).
45: .br
46: .I bclose
47: closes a B-tree and (if necessary) rewrites
48: its root.
49: .br
50: .I bflush
51: writes the root without closing the B-tree.
52: .PP
53: The subroutines keep track of a current
54: position in each open B-tree.
55: When the B-tree is opened the current
56: position is just before the first key.
57: Calling
58: .I bfirst
59: has the same effect.
60: .I bseek
61: makes the current position just before the
62: .I key
63: and returns FOUND,
64: if the key exists in the file,
65: or it makes the current position just before
66: the next largest key and returns NOTFOUND,
67: or, if there is no larger key in the file
68: it returns EOF.
69: .I bread
70: returns the key and value at the current
71: position, and advances the current position.
72: Note that the arguments to
73: .I bread
74: are all pointers.
75: If either
76: .I key
77: or
78: .I value
79: are NULL, the corresponding argument is not returned.
80: .I bread stores its results in the buffers
81: given in the arguments, and sets the lengths
82: of the results in the arguments.
83: .I breclen
84: returns the length of the value which will
85: be returned by the next call to
86: .I bread.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.