diff options
Diffstat (limited to 'contrib/perl5/ext/SDBM_File/sdbm/sdbm.3')
-rw-r--r-- | contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 | 295 |
1 files changed, 0 insertions, 295 deletions
diff --git a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 b/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 deleted file mode 100644 index fe6fe76..0000000 --- a/contrib/perl5/ext/SDBM_File/sdbm/sdbm.3 +++ /dev/null @@ -1,295 +0,0 @@ -.\" $Id: sdbm.3,v 1.2 90/12/13 13:00:57 oz Exp $ -.TH SDBM 3 "1 March 1990" -.SH NAME -sdbm, sdbm_open, sdbm_prep, sdbm_close, sdbm_fetch, sdbm_store, sdbm_delete, sdbm_exists, sdbm_firstkey, sdbm_nextkey, sdbm_hash, sdbm_rdonly, sdbm_error, sdbm_clearerr, sdbm_dirfno, sdbm_pagfno \- data base subroutines -.SH SYNOPSIS -.nf -.ft B -#include <sdbm.h> -.sp -typedef struct { - char *dptr; - int dsize; -} datum; -.sp -datum nullitem = { NULL, 0 }; -.sp -\s-1DBM\s0 *sdbm_open(char *file, int flags, int mode) -.sp -\s-1DBM\s0 *sdbm_prep(char *dirname, char *pagname, int flags, int mode) -.sp -void sdbm_close(\s-1DBM\s0 *db) -.sp -datum sdbm_fetch(\s-1DBM\s0 *db, key) -.sp -int sdbm_store(\s-1DBM\s0 *db, datum key, datum val, int flags) -.sp -int sdbm_delete(\s-1DBM\s0 *db, datum key) -.sp -int sdbm_exists(\s-1DBM\s0 *db, datum key) -.sp -datum sdbm_firstkey(\s-1DBM\s0 *db) -.sp -datum sdbm_nextkey(\s-1DBM\s0 *db) -.sp -long sdbm_hash(char *string, int len) -.sp -int sdbm_rdonly(\s-1DBM\s0 *db) -int sdbm_error(\s-1DBM\s0 *db) -sdbm_clearerr(\s-1DBM\s0 *db) -int sdbm_dirfno(\s-1DBM\s0 *db) -int sdbm_pagfno(\s-1DBM\s0 *db) -.ft R -.fi -.SH DESCRIPTION -.IX "database library" sdbm "" "\fLsdbm\fR" -.IX sdbm_open "" "\fLsdbm_open\fR \(em open \fLsdbm\fR database" -.IX sdbm_prep "" "\fLsdbm_prep\fR \(em prepare \fLsdbm\fR database" -.IX sdbm_close "" "\fLsdbm_close\fR \(em close \fLsdbm\fR routine" -.IX sdbm_fetch "" "\fLsdbm_fetch\fR \(em fetch \fLsdbm\fR database data" -.IX sdbm_store "" "\fLsdbm_store\fR \(em add data to \fLsdbm\fR database" -.IX sdbm_delete "" "\fLsdbm_delete\fR \(em remove data from \fLsdbm\fR database" -.IX sdbm_exists "" "\fLsdbm_exists\fR \(em test \fLsdbm\fR key existence" -.IX sdbm_firstkey "" "\fLsdbm_firstkey\fR \(em access \fLsdbm\fR database" -.IX sdbm_nextkey "" "\fLsdbm_nextkey\fR \(em access \fLsdbm\fR database" -.IX sdbm_hash "" "\fLsdbm_hash\fR \(em string hash for \fLsdbm\fR database" -.IX sdbm_rdonly "" "\fLsdbm_rdonly\fR \(em return \fLsdbm\fR database read-only mode" -.IX sdbm_error "" "\fLsdbm_error\fR \(em return \fLsdbm\fR database error condition" -.IX sdbm_clearerr "" "\fLsdbm_clearerr\fR \(em clear \fLsdbm\fR database error condition" -.IX sdbm_dirfno "" "\fLsdbm_dirfno\fR \(em return \fLsdbm\fR database bitmap file descriptor" -.IX sdbm_pagfno "" "\fLsdbm_pagfno\fR \(em return \fLsdbm\fR database data file descriptor" -.IX "database functions \(em \fLsdbm\fR" sdbm_open "" \fLsdbm_open\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_prep "" \fLsdbm_prep\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_close "" \fLsdbm_close\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_fetch "" \fLsdbm_fetch\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_store "" \fLsdbm_store\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_delete "" \fLsdbm_delete\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_firstkey "" \fLsdbm_firstkey\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_nextkey "" \fLsdbm_nextkey\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_rdonly "" \fLsdbm_rdonly\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_error "" \fLsdbm_error\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_clearerr "" \fLsdbm_clearerr\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_dirfno "" \fLsdbm_dirfno\fP -.IX "database functions \(em \fLsdbm\fR" sdbm_pagfno "" \fLsdbm_pagfno\fP -.LP -This package allows an application to maintain a mapping of <key,value> pairs -in disk files. This is not to be considered a real database system, but is -still useful in many simple applications built around fast retrieval of a data -value from a key. This implementation uses an external hashing scheme, -called Dynamic Hashing, as described by Per-Aake Larson in BIT 18 (1978) pp. -184-201. Retrieval of any item usually requires a single disk access. -The application interface is compatible with the -.IR ndbm (3) -library. -.LP -An -.B sdbm -database is kept in two files usually given the extensions -.B \.dir -and -.BR \.pag . -The -.B \.dir -file contains a bitmap representing a forest of binary hash trees, the leaves -of which indicate data pages in the -.B \.pag -file. -.LP -The application interface uses the -.B datum -structure to describe both -.I keys -and -.IR value s. -A -.B datum -specifies a byte sequence of -.I dsize -size pointed to by -.IR dptr . -If you use -.SM ASCII -strings as -.IR key s -or -.IR value s, -then you must decide whether or not to include the terminating -.SM NUL -byte which sometimes defines strings. Including it will require larger -database files, but it will be possible to get sensible output from a -.IR strings (1) -command applied to the data file. -.LP -In order to allow a process using this package to manipulate multiple -databases, the applications interface always requires a -.IR handle , -a -.BR "DBM *" , -to identify the database to be manipulated. Such a handle can be obtained -from the only routines that do not require it, namely -.BR sdbm_open (\|) -or -.BR sdbm_prep (\|). -Either of these will open or create the two necessary files. The -difference is that the latter allows explicitly naming the bitmap and data -files whereas -.BR sdbm_open (\|) -will take a base file name and call -.BR sdbm_prep (\|) -with the default extensions. -The -.I flags -and -.I mode -parameters are the same as for -.BR open (2). -.LP -To free the resources occupied while a database handle is active, call -.BR sdbm_close (\|). -.LP -Given a handle, one can retrieve data associated with a key by using the -.BR sdbm_fetch (\|) -routine, and associate data with a key by using the -.BR sdbm_store (\|) -routine. -.BR sdbm_exists (\|) -will say whether a given key exists in the database. -.LP -The values of the -.I flags -parameter for -.BR sdbm_store (\|) -can be either -.BR \s-1DBM_INSERT\s0 , -which will not change an existing entry with the same key, or -.BR \s-1DBM_REPLACE\s0 , -which will replace an existing entry with the same key. -Keys are unique within the database. -.LP -To delete a key and its associated value use the -.BR sdbm_delete (\|) -routine. -.LP -To retrieve every key in the database, use a loop like: -.sp -.nf -.ft B -for (key = sdbm_firstkey(db); key.dptr != NULL; key = sdbm_nextkey(db)) - ; -.ft R -.fi -.LP -The order of retrieval is unspecified. -.LP -If you determine that the performance of the database is inadequate or -you notice clustering or other effects that may be due to the hashing -algorithm used by this package, you can override it by supplying your -own -.BR sdbm_hash (\|) -routine. Doing so will make the database unintelligable to any other -applications that do not use your specialized hash function. -.sp -.LP -The following macros are defined in the header file: -.IP -.BR sdbm_rdonly (\|) -returns true if the database has been opened read\-only. -.IP -.BR sdbm_error (\|) -returns true if an I/O error has occurred. -.IP -.BR sdbm_clearerr (\|) -allows you to clear the error flag if you think you know what the error -was and insist on ignoring it. -.IP -.BR sdbm_dirfno (\|) -returns the file descriptor associated with the bitmap file. -.IP -.BR sdbm_pagfno (\|) -returns the file descriptor associated with the data file. -.SH SEE ALSO -.IR open (2). -.SH DIAGNOSTICS -Functions that return a -.B "DBM *" -handle will use -.SM NULL -to indicate an error. -Functions that return an -.B int -will use \-1 to indicate an error. The normal return value in that case is 0. -Functions that return a -.B datum -will return -.B nullitem -to indicate an error. -.LP -As a special case of -.BR sdbm_store (\|), -if it is called with the -.B \s-1DBM_INSERT\s0 -flag and the key already exists in the database, the return value will be 1. -.LP -In general, if a function parameter is invalid, -.B errno -will be set to -.BR \s-1EINVAL\s0 . -If a write operation is requested on a read-only database, -.B errno -will be set to -.BR \s-1ENOPERM\s0 . -If a memory allocation (using -.IR malloc (3)) -failed, -.B errno -will be set to -.BR \s-1ENOMEM\s0 . -For I/O operation failures -.B errno -will contain the value set by the relevant failed system call, either -.IR read (2), -.IR write (2), -or -.IR lseek (2). -.SH AUTHOR -.IP "Ozan S. Yigit" (oz@nexus.yorku.ca) -.SH BUGS -The sum of key and value data sizes must not exceed -.B \s-1PAIRMAX\s0 -(1008 bytes). -.LP -The sum of the key and value data sizes where several keys hash to the -same value must fit within one bitmap page. -.LP -The -.B \.pag -file will contain holes, so its apparent size is larger than its contents. -When copied through the filesystem the holes will be filled. -.LP -The contents of -.B datum -values returned are in volatile storage. If you want to retain the values -pointed to, you must copy them immediately before another call to this package. -.LP -The only safe way for multiple processes to (read and) update a database at -the same time, is to implement a private locking scheme outside this package -and open and close the database between lock acquisitions. It is safe for -multiple processes to concurrently access a database read-only. -.SH APPLICATIONS PORTABILITY -For complete source code compatibility with the Berkeley Unix -.IR ndbm (3) -library, the -.B sdbm.h -header file should be installed in -.BR /usr/include/ndbm.h . -.LP -The -.B nullitem -data item, and the -.BR sdbm_prep (\|), -.BR sdbm_hash (\|), -.BR sdbm_rdonly (\|), -.BR sdbm_dirfno (\|), -and -.BR sdbm_pagfno (\|) -functions are unique to this package. |