xref: /freebsd/lib/libc/db/man/dbm.3 (revision 9916c5d2990d1552ee2d64b8644ba8f71a109426)
1480e9923SNik Clayton.\" Copyright (c) 1999 Tim Singletary
2480e9923SNik Clayton.\" No copyright is claimed.
3480e9923SNik Clayton.\"
4480e9923SNik Clayton.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
5480e9923SNik Clayton.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6480e9923SNik Clayton.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
7480e9923SNik Clayton.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
8480e9923SNik Clayton.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9480e9923SNik Clayton.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
10480e9923SNik Clayton.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
11480e9923SNik Clayton.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
12480e9923SNik Clayton.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
13480e9923SNik Clayton.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
14480e9923SNik Clayton.\" SUCH DAMAGE.
15480e9923SNik Clayton.\"
16480e9923SNik Clayton.\" $FreeBSD$
17480e9923SNik Clayton.\"
18480e9923SNik Clayton.\" Note: The date here should be updated whenever a non-trivial
19480e9923SNik Clayton.\" change is made to the manual page.
20480e9923SNik Clayton.Dd July 7, 1999
2195cf33c5SRuslan Ermilov.Dt DBM 3
2295cf33c5SRuslan Ermilov.Os
23480e9923SNik Clayton.Sh NAME
2495cf33c5SRuslan Ermilov.Nm dbm_clearerr ,
2595cf33c5SRuslan Ermilov.Nm dbm_close ,
2695cf33c5SRuslan Ermilov.Nm dbm_delete ,
2795cf33c5SRuslan Ermilov.Nm dbm_dirfno ,
2895cf33c5SRuslan Ermilov.Nm dbm_error ,
2995cf33c5SRuslan Ermilov.Nm dbm_fetch ,
3095cf33c5SRuslan Ermilov.Nm dbm_firstkey ,
3195cf33c5SRuslan Ermilov.Nm dbm_nextkey ,
3295cf33c5SRuslan Ermilov.Nm dbm_open ,
33480e9923SNik Clayton.Nm dbm_store
34480e9923SNik Clayton.Nd database access functions
35480e9923SNik Clayton.Sh SYNOPSIS
36480e9923SNik Clayton.Fd #include <fcntl.h>
37480e9923SNik Clayton.Fd #include <ndbm.h>
38480e9923SNik Clayton.Ft DBM *
39480e9923SNik Clayton.Fn dbm_open "const char *base" "int flags" "int mode"
40480e9923SNik Clayton.Ft void
41480e9923SNik Clayton.Fn dbm_close "DBM *db"
42480e9923SNik Clayton.Ft int
43480e9923SNik Clayton.Fn dbm_store "DBM *db" "datum key" "datum data" "int flags"
44480e9923SNik Clayton.Ft datum
45480e9923SNik Clayton.Fn dbm_fetch "DBM *db" "datum key"
46480e9923SNik Clayton.Ft int
47480e9923SNik Clayton.Fn dbm_delete "DBM *db" "datum key"
48480e9923SNik Clayton.Ft datum
49480e9923SNik Clayton.Fn dbm_firstkey "DBM *db"
50480e9923SNik Clayton.Ft datum
51480e9923SNik Clayton.Fn dbm_nextkey "DBM *db"
52480e9923SNik Clayton.Ft int
53480e9923SNik Clayton.Fn dbm_error "DBM *db"
54480e9923SNik Clayton.Ft int
55480e9923SNik Clayton.Fn dbm_clearerr "DBM *db"
56480e9923SNik Clayton.Ft int
57480e9923SNik Clayton.Fn dbm_dirfno "DBM *db"
58480e9923SNik Clayton.Sh DESCRIPTION
59480e9923SNik ClaytonDatabase access functions.
60480e9923SNik ClaytonThese functions are implemented using
6195cf33c5SRuslan Ermilov.Xr dbopen 3
62480e9923SNik Claytonwith a
6395cf33c5SRuslan Ermilov.Xr hash 3
64480e9923SNik Claytondatabase.
6595cf33c5SRuslan Ermilov.Pp
6695cf33c5SRuslan Ermilov.Vt datum
67480e9923SNik Claytonis declared in
6895cf33c5SRuslan Ermilov.Aq Pa ndbm.h :
69480e9923SNik Clayton.Bd -literal
70480e9923SNik Claytontypedef struct {
71480e9923SNik Clayton	char *dptr;
72480e9923SNik Clayton	int dsize;
73480e9923SNik Clayton} datum;
74480e9923SNik Clayton.Ed
7595cf33c5SRuslan Ermilov.Pp
76480e9923SNik Clayton.Fn dbm_open base flags mode
77480e9923SNik Claytonopens or creates a database.
7895cf33c5SRuslan Ermilov.Fa base
7995cf33c5SRuslan Ermilovis the basename of the file containing
80480e9923SNik Claytonthe database; the actual database has a
8195cf33c5SRuslan Ermilov.Pa .db
8295cf33c5SRuslan Ermilovsuffix.
8395cf33c5SRuslan ErmilovI.e., if
84480e9923SNik Clayton.Fa base
85480e9923SNik Claytonis
8695cf33c5SRuslan Ermilov.Qq Li /home/me/mystuff
87480e9923SNik Claytonthen the actual database is in the file
8895cf33c5SRuslan Ermilov.Pa /home/me/mystuff.db .
8995cf33c5SRuslan Ermilov.Fa flags
9095cf33c5SRuslan Ermilovand
9195cf33c5SRuslan Ermilov.Fa mode
9295cf33c5SRuslan Ermilovare passed to
9395cf33c5SRuslan Ermilov.Xr open 2 .
949916c5d2SRuslan Ermilov.Pq Dv O_RDWR | O_CREAT
95480e9923SNik Claytonis a typical value for
9695cf33c5SRuslan Ermilov.Fa flags ;
97480e9923SNik Clayton.Li 0660
98480e9923SNik Claytonis a typical value for
9995cf33c5SRuslan Ermilov.Fa mode .
10095cf33c5SRuslan Ermilov.Dv O_WRONLY
101480e9923SNik Claytonis not allowed in
10295cf33c5SRuslan Ermilov.Fa flags .
103480e9923SNik ClaytonThe pointer returned by
104480e9923SNik Clayton.Fn dbm_open
105480e9923SNik Claytonidentifies the database and is the
106480e9923SNik Clayton.Fa db
107480e9923SNik Claytonargument to the other functions.
108480e9923SNik Clayton.Fn dbm_open
109480e9923SNik Claytonreturns
11095cf33c5SRuslan Ermilov.Dv NULL
111480e9923SNik Claytonand sets
112480e9923SNik Clayton.Va errno
11395cf33c5SRuslan Ermilovif there were any errors.
11495cf33c5SRuslan Ermilov.Pp
115480e9923SNik Clayton.Fn dbm_close db
116480e9923SNik Claytoncloses the database.
117480e9923SNik Clayton.Fn dbm_close
118480e9923SNik Claytonnormally returns zero.
11995cf33c5SRuslan Ermilov.Pp
120480e9923SNik Clayton.Fn dbm_store db key data flags
121480e9923SNik Claytoninserts or replaces an entry in the database.
12295cf33c5SRuslan Ermilov.Fa flags
12395cf33c5SRuslan Ermilovis either
12495cf33c5SRuslan Ermilov.Dv DBM_INSERT
125480e9923SNik Claytonor
12695cf33c5SRuslan Ermilov.Dv DBM_REPLACE .
127480e9923SNik ClaytonIf
128480e9923SNik Clayton.Fa flags
129480e9923SNik Claytonis
13095cf33c5SRuslan Ermilov.Dv DBM_INSERT
131480e9923SNik Claytonand the database already contains an entry for
13295cf33c5SRuslan Ermilov.Fa key ,
13395cf33c5SRuslan Ermilovthat entry is not replaced.
13495cf33c5SRuslan ErmilovOtherwise the entry is replaced or inserted.
135480e9923SNik Clayton.Fn dbm_store
136a910f192SDima Dorfmannormally returns zero but returns 1 if the entry could not be
137480e9923SNik Claytoninserted (because
138480e9923SNik Clayton.Fa flags
139480e9923SNik Claytonis
14095cf33c5SRuslan Ermilov.Dv DBM_INSERT ,
141480e9923SNik Claytonand an entry with
142480e9923SNik Clayton.Fa key
143480e9923SNik Claytonalready exists) or returns -1 and sets
144480e9923SNik Clayton.Va errno
145480e9923SNik Claytonif there were any errors.
14695cf33c5SRuslan Ermilov.Pp
147480e9923SNik Clayton.Fn dbm_fetch db key
148480e9923SNik Claytonreturns
14995cf33c5SRuslan Ermilov.Dv NULL
150480e9923SNik Claytonor the
151480e9923SNik Clayton.Fa data
152480e9923SNik Claytoncorresponding to
15395cf33c5SRuslan Ermilov.Fa key .
15495cf33c5SRuslan Ermilov.Pp
155480e9923SNik Clayton.Fn dbm_delete db key
156480e9923SNik Claytondeletes the entry for
15795cf33c5SRuslan Ermilov.Fa key .
158480e9923SNik Clayton.Fn dbm_delete
159480e9923SNik Claytonnormally returns zero but returns 1 if there was no entry with
160480e9923SNik Clayton.Fa key
161480e9923SNik Claytonin the database or returns -1 and sets
162480e9923SNik Clayton.Va errno
163480e9923SNik Claytonif there were any errors.
16495cf33c5SRuslan Ermilov.Pp
165480e9923SNik Clayton.Fn dbm_firstkey db
166480e9923SNik Claytonreturns the first key in the database.
167480e9923SNik Clayton.Fn dbm_nextkey db
168480e9923SNik Claytonreturns subsequent keys.
169480e9923SNik Clayton.Fn db_firstkey
170480e9923SNik Claytonmust be called before
171480e9923SNik Clayton.Fn dbm_nextkey .
172480e9923SNik ClaytonThe order in which keys are returned is unspecified and may appear
173480e9923SNik Claytonrandom.
174480e9923SNik Clayton.Fn dbm_nextkey
175480e9923SNik Claytonreturns
17695cf33c5SRuslan Ermilov.Dv NULL
177480e9923SNik Claytonafter all keys have been returned.
17895cf33c5SRuslan Ermilov.Pp
179480e9923SNik Clayton.Fn dbm_error db
180480e9923SNik Claytonreturns the
181480e9923SNik Clayton.Va errno
182480e9923SNik Claytonvalue of the most recent error.
183480e9923SNik Clayton.Fn dbm_clearerr db
184480e9923SNik Claytonresets this value to 0 and returns 0.
18595cf33c5SRuslan Ermilov.Pp
186480e9923SNik Clayton.Fn dbm_dirfno db
187480e9923SNik Claytonreturns the file descriptor to the database.
188480e9923SNik Clayton.Sh SEE ALSO
18995cf33c5SRuslan Ermilov.Xr open 2 ,
19095cf33c5SRuslan Ermilov.Xr dbopen 3 ,
19195cf33c5SRuslan Ermilov.Xr hash 3
192480e9923SNik Clayton.Sh STANDARDS
193480e9923SNik ClaytonThese functions (except
19495cf33c5SRuslan Ermilov.Fn dbm_dirfno )
19595cf33c5SRuslan Ermilovare included in the
19695cf33c5SRuslan Ermilov.St -susv2 .
197