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