xref: /freebsd/lib/libc/db/man/dbm.3 (revision 2efeeba554cbd7bdee9cfe17641c8bd335c7972f)
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
3632eef9aeSRuslan Ermilov.In fcntl.h
3732eef9aeSRuslan Ermilov.In 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
761fae73b1SRuslan ErmilovThe
77480e9923SNik Clayton.Fn dbm_open base flags mode
781fae73b1SRuslan Ermilovfunction
79480e9923SNik Claytonopens or creates a database.
802efeeba5SRuslan ErmilovThe
8195cf33c5SRuslan Ermilov.Fa base
822efeeba5SRuslan Ermilovargument
8395cf33c5SRuslan Ermilovis the basename of the file containing
84480e9923SNik Claytonthe database; the actual database has a
8595cf33c5SRuslan Ermilov.Pa .db
8695cf33c5SRuslan Ermilovsuffix.
8795cf33c5SRuslan ErmilovI.e., if
88480e9923SNik Clayton.Fa base
89480e9923SNik Claytonis
9095cf33c5SRuslan Ermilov.Qq Li /home/me/mystuff
91480e9923SNik Claytonthen the actual database is in the file
9295cf33c5SRuslan Ermilov.Pa /home/me/mystuff.db .
932efeeba5SRuslan ErmilovThe
9495cf33c5SRuslan Ermilov.Fa flags
9595cf33c5SRuslan Ermilovand
9695cf33c5SRuslan Ermilov.Fa mode
972efeeba5SRuslan Ermilovarguments
9895cf33c5SRuslan Ermilovare passed to
9995cf33c5SRuslan Ermilov.Xr open 2 .
1009916c5d2SRuslan Ermilov.Pq Dv O_RDWR | O_CREAT
101480e9923SNik Claytonis a typical value for
10295cf33c5SRuslan Ermilov.Fa flags ;
103480e9923SNik Clayton.Li 0660
104480e9923SNik Claytonis a typical value for
10595cf33c5SRuslan Ermilov.Fa mode .
10695cf33c5SRuslan Ermilov.Dv O_WRONLY
107480e9923SNik Claytonis not allowed in
10895cf33c5SRuslan Ermilov.Fa flags .
109480e9923SNik ClaytonThe pointer returned by
110480e9923SNik Clayton.Fn dbm_open
111480e9923SNik Claytonidentifies the database and is the
112480e9923SNik Clayton.Fa db
113480e9923SNik Claytonargument to the other functions.
1141fae73b1SRuslan ErmilovThe
115480e9923SNik Clayton.Fn dbm_open
1161fae73b1SRuslan Ermilovfunction
117480e9923SNik Claytonreturns
11895cf33c5SRuslan Ermilov.Dv NULL
119480e9923SNik Claytonand sets
120480e9923SNik Clayton.Va errno
12195cf33c5SRuslan Ermilovif there were any errors.
12295cf33c5SRuslan Ermilov.Pp
1231fae73b1SRuslan ErmilovThe
124480e9923SNik Clayton.Fn dbm_close db
1251fae73b1SRuslan Ermilovfunction
126480e9923SNik Claytoncloses the database.
1271fae73b1SRuslan ErmilovThe
128480e9923SNik Clayton.Fn dbm_close
1291fae73b1SRuslan Ermilovfunction
130480e9923SNik Claytonnormally returns zero.
13195cf33c5SRuslan Ermilov.Pp
1321fae73b1SRuslan ErmilovThe
133480e9923SNik Clayton.Fn dbm_store db key data flags
1341fae73b1SRuslan Ermilovfunction
135480e9923SNik Claytoninserts or replaces an entry in the database.
1362efeeba5SRuslan ErmilovThe
13795cf33c5SRuslan Ermilov.Fa flags
1382efeeba5SRuslan Ermilovargument
13995cf33c5SRuslan Ermilovis either
14095cf33c5SRuslan Ermilov.Dv DBM_INSERT
141480e9923SNik Claytonor
14295cf33c5SRuslan Ermilov.Dv DBM_REPLACE .
143480e9923SNik ClaytonIf
144480e9923SNik Clayton.Fa flags
145480e9923SNik Claytonis
14695cf33c5SRuslan Ermilov.Dv DBM_INSERT
147480e9923SNik Claytonand the database already contains an entry for
14895cf33c5SRuslan Ermilov.Fa key ,
14995cf33c5SRuslan Ermilovthat entry is not replaced.
15095cf33c5SRuslan ErmilovOtherwise the entry is replaced or inserted.
1511fae73b1SRuslan ErmilovThe
152480e9923SNik Clayton.Fn dbm_store
1531fae73b1SRuslan Ermilovfunction
154a910f192SDima Dorfmannormally returns zero but returns 1 if the entry could not be
155480e9923SNik Claytoninserted (because
156480e9923SNik Clayton.Fa flags
157480e9923SNik Claytonis
15895cf33c5SRuslan Ermilov.Dv DBM_INSERT ,
159480e9923SNik Claytonand an entry with
160480e9923SNik Clayton.Fa key
161480e9923SNik Claytonalready exists) or returns -1 and sets
162480e9923SNik Clayton.Va errno
163480e9923SNik Claytonif there were any errors.
16495cf33c5SRuslan Ermilov.Pp
1651fae73b1SRuslan ErmilovThe
166480e9923SNik Clayton.Fn dbm_fetch db key
1671fae73b1SRuslan Ermilovfunction
168480e9923SNik Claytonreturns
16995cf33c5SRuslan Ermilov.Dv NULL
170480e9923SNik Claytonor the
171480e9923SNik Clayton.Fa data
172480e9923SNik Claytoncorresponding to
17395cf33c5SRuslan Ermilov.Fa key .
17495cf33c5SRuslan Ermilov.Pp
1751fae73b1SRuslan ErmilovThe
176480e9923SNik Clayton.Fn dbm_delete db key
1771fae73b1SRuslan Ermilovfunction
178480e9923SNik Claytondeletes the entry for
17995cf33c5SRuslan Ermilov.Fa key .
1801fae73b1SRuslan ErmilovThe
181480e9923SNik Clayton.Fn dbm_delete
1821fae73b1SRuslan Ermilovfunction
183480e9923SNik Claytonnormally returns zero but returns 1 if there was no entry with
184480e9923SNik Clayton.Fa key
185480e9923SNik Claytonin the database or returns -1 and sets
186480e9923SNik Clayton.Va errno
187480e9923SNik Claytonif there were any errors.
18895cf33c5SRuslan Ermilov.Pp
1891fae73b1SRuslan ErmilovThe
190480e9923SNik Clayton.Fn dbm_firstkey db
1911fae73b1SRuslan Ermilovfunction
192480e9923SNik Claytonreturns the first key in the database.
1931fae73b1SRuslan ErmilovThe
194480e9923SNik Clayton.Fn dbm_nextkey db
1951fae73b1SRuslan Ermilovfunction
196480e9923SNik Claytonreturns subsequent keys.
1971fae73b1SRuslan ErmilovThe
198480e9923SNik Clayton.Fn db_firstkey
1991fae73b1SRuslan Ermilovfunction
200480e9923SNik Claytonmust be called before
201480e9923SNik Clayton.Fn dbm_nextkey .
202480e9923SNik ClaytonThe order in which keys are returned is unspecified and may appear
203480e9923SNik Claytonrandom.
2041fae73b1SRuslan ErmilovThe
205480e9923SNik Clayton.Fn dbm_nextkey
2061fae73b1SRuslan Ermilovfunction
207480e9923SNik Claytonreturns
20895cf33c5SRuslan Ermilov.Dv NULL
209480e9923SNik Claytonafter all keys have been returned.
21095cf33c5SRuslan Ermilov.Pp
2111fae73b1SRuslan ErmilovThe
212480e9923SNik Clayton.Fn dbm_error db
2131fae73b1SRuslan Ermilovfunction
214480e9923SNik Claytonreturns the
215480e9923SNik Clayton.Va errno
216480e9923SNik Claytonvalue of the most recent error.
2171fae73b1SRuslan ErmilovThe
218480e9923SNik Clayton.Fn dbm_clearerr db
2191fae73b1SRuslan Ermilovfunction
220480e9923SNik Claytonresets this value to 0 and returns 0.
22195cf33c5SRuslan Ermilov.Pp
2221fae73b1SRuslan ErmilovThe
223480e9923SNik Clayton.Fn dbm_dirfno db
2241fae73b1SRuslan Ermilovfunction
225480e9923SNik Claytonreturns the file descriptor to the database.
226480e9923SNik Clayton.Sh SEE ALSO
22795cf33c5SRuslan Ermilov.Xr open 2 ,
22895cf33c5SRuslan Ermilov.Xr dbopen 3 ,
22995cf33c5SRuslan Ermilov.Xr hash 3
230480e9923SNik Clayton.Sh STANDARDS
231480e9923SNik ClaytonThese functions (except
23295cf33c5SRuslan Ermilov.Fn dbm_dirfno )
23395cf33c5SRuslan Ermilovare included in the
23495cf33c5SRuslan Ermilov.St -susv2 .
235