diff options
Diffstat (limited to 'upstream/archlinux/man3p/dbm_clearerr.3p')
-rw-r--r-- | upstream/archlinux/man3p/dbm_clearerr.3p | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/dbm_clearerr.3p b/upstream/archlinux/man3p/dbm_clearerr.3p new file mode 100644 index 00000000..639d03c3 --- /dev/null +++ b/upstream/archlinux/man3p/dbm_clearerr.3p @@ -0,0 +1,405 @@ +'\" et +.TH DBM_CLEARERR "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +dbm_clearerr, +dbm_close, +dbm_delete, +dbm_error, +dbm_fetch, +dbm_firstkey, +dbm_nextkey, +dbm_open, +dbm_store +\(em database functions +.SH SYNOPSIS +.LP +.nf +#include <ndbm.h> +.P +int dbm_clearerr(DBM *\fIdb\fP); +void dbm_close(DBM *\fIdb\fP); +int dbm_delete(DBM *\fIdb\fP, datum \fIkey\fP); +int dbm_error(DBM *\fIdb\fP); +datum dbm_fetch(DBM *\fIdb\fP, datum \fIkey\fP); +datum dbm_firstkey(DBM *\fIdb\fP); +datum dbm_nextkey(DBM *\fIdb\fP); +DBM *dbm_open(const char *\fIfile\fP, int \fIopen_flags\fP, mode_t \fIfile_mode\fP); +int dbm_store(DBM *\fIdb\fP, datum \fIkey\fP, datum \fIcontent\fP, int \fIstore_mode\fP); +.fi +.SH DESCRIPTION +These functions create, access, and modify a database. +.P +A +.BR datum +consists of at least two members, +.IR dptr +and +.IR dsize . +The +.IR dptr +member points to an object that is +.IR dsize +bytes in length. Arbitrary binary data, as well as character strings, +may be stored in the object pointed to by +.IR dptr . +.P +A database shall be stored in one or two files. When one file is used, +the name of the database file shall be formed by appending the suffix +.BR .db +to the +.IR file +argument given to +\fIdbm_open\fR(). +When two files are used, the names of the database files shall be +formed by appending the suffixes +.BR .dir +and +.BR .pag +respectively to the +.IR file +argument. +.P +The +\fIdbm_open\fR() +function shall open a database. The +.IR file +argument to the function is the pathname of the database. The +.IR open_flags +argument has the same meaning as the +.IR flags +argument of +\fIopen\fR() +except that a database opened for write-only access opens the files for +read and write access and the behavior of the O_APPEND flag +is unspecified. The +.IR file_mode +argument has the same meaning as the third argument of +\fIopen\fR(). +.P +The +\fIdbm_open\fR() +function need not accept pathnames longer than +{PATH_MAX}\-4 +bytes (including the terminating null), or pathnames with a last +component longer than +{NAME_MAX}\-4 +bytes (excluding the terminating null). +.P +The +\fIdbm_close\fR() +function shall close a database. The application shall ensure that +argument +.IR db +is a pointer to a +.BR dbm +structure that has been returned from a call to +\fIdbm_open\fR(). +.P +These database functions shall support an internal block size large +enough to support key/content pairs of at least 1\|023 bytes. +.P +The +\fIdbm_fetch\fR() +function shall read a record from a database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +The argument +.IR key +is a +.BR datum +that has been initialized by the application to the value of +the key that matches the key of the record the program is fetching. +.P +The +\fIdbm_store\fR() +function shall write a record to a database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +The argument +.IR key +is a +.BR datum +that has been initialized by the application to the value of the key +that identifies (for subsequent reading, writing, or deleting) the +record the application is writing. The argument +.IR content +is a +.BR datum +that has been initialized by the application to the value of the record +the program is writing. The argument +.IR store_mode +controls whether +\fIdbm_store\fR() +replaces any pre-existing record that has the same key that is +specified by the +.IR key +argument. The application shall set +.IR store_mode +to either DBM_INSERT or DBM_REPLACE. If the database contains a record +that matches the +.IR key +argument and +.IR store_mode +is DBM_REPLACE, the existing record shall be replaced with the new +record. If the database contains a record that matches the +.IR key +argument and +.IR store_mode +is DBM_INSERT, the existing record shall be left unchanged and the new +record ignored. If the database does not contain a record that matches +the +.IR key +argument and +.IR store_mode +is either DBM_INSERT or DBM_REPLACE, the new record shall be inserted +in the database. +.P +If the sum of a key/content pair exceeds the internal block size, the +result is unspecified. Moreover, the application shall ensure that all +key/content pairs that hash together fit on a single block. The +\fIdbm_store\fR() +function shall return an error in the event that a disk block fills +with inseparable data. +.P +The +\fIdbm_delete\fR() +function shall delete a record and its key from the database. The +argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +The argument +.IR key +is a +.BR datum +that has been initialized by the application to the value of +the key that identifies the record the program is deleting. +.P +The +\fIdbm_firstkey\fR() +function shall return the first key in the database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +.P +The +\fIdbm_nextkey\fR() +function shall return the next key in the database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +The application shall ensure that the +\fIdbm_firstkey\fR() +function is called before calling +\fIdbm_nextkey\fR(). +Subsequent calls to +\fIdbm_nextkey\fR() +return the next key until all of the keys in the database have been +returned. +.P +The +\fIdbm_error\fR() +function shall return the error condition of the database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +.P +The +\fIdbm_clearerr\fR() +function shall clear the error condition of the database. The argument +.IR db +is a pointer to a database structure that has been returned from a call +to +\fIdbm_open\fR(). +.P +The +.IR dptr +pointers returned by these functions may point into static storage that +may be changed by subsequent calls. +.P +These functions need not be thread-safe. +.SH "RETURN VALUE" +The +\fIdbm_store\fR() +and +\fIdbm_delete\fR() +functions shall return 0 when they succeed and a negative value when +they fail. +.P +The +\fIdbm_store\fR() +function shall return 1 if it is called with a +.IR flags +value of DBM_INSERT and the function finds an existing record with the +same key. +.P +The +\fIdbm_error\fR() +function shall return 0 if the error condition is not set and return a +non-zero value if the error condition is set. +.P +The return value of +\fIdbm_clearerr\fR() +is unspecified. +.P +The +\fIdbm_firstkey\fR() +and +\fIdbm_nextkey\fR() +functions shall return a key +.BR datum . +When the end of the database is reached, the +.IR dptr +member of the key is a null pointer. If an error is detected, the +.IR dptr +member of the key shall be a null pointer and the error condition of +the database shall be set. +.P +The +\fIdbm_fetch\fR() +function shall return a content +.BR datum . +If no record in the database matches the key or if an error condition +has been detected in the database, the +.IR dptr +member of the content shall be a null pointer. +.P +The +\fIdbm_open\fR() +function shall return a pointer to a database structure. If an error +is detected during the operation, +\fIdbm_open\fR() +shall return a (\c +.BR "DBM *" )0. +.SH ERRORS +No errors are defined. +.LP +.IR "The following sections are informative." +.SH EXAMPLES +None. +.SH "APPLICATION USAGE" +The following code can be used to traverse the database: +.sp +.RS 4 +.nf + +for(key = dbm_firstkey(db); key.dptr != NULL; key = dbm_nextkey(db)) +.fi +.P +.RE +.P +The +.IR dbm_ * +functions provided in this library should not be confused in any way +with those of a general-purpose database management system. These +functions do not provide for multiple search keys per entry, they do +not protect against multi-user access (in other words they do not lock +records or files), and they do not provide the many other useful +database functions that are found in more robust database management +systems. Creating and updating databases by use of these functions is +relatively slow because of data copies that occur upon hash +collisions. These functions are useful for applications requiring fast +lookup of relatively static information that is to be indexed by a +single key. +.P +Note that a strictly conforming application is extremely limited by +these functions: since there is no way to determine that the keys in +use do not all hash to the same value (although that would be rare), a +strictly conforming application cannot be guaranteed that it can store +more than one block's worth of data in the database. As long as a key +collision does not occur, additional data may be stored, but because +there is no way to determine whether an error is due to a key collision +or some other error condition (\c +\fIdbm_error\fR() +being effectively a Boolean), once an error is detected, the +application is effectively limited to guessing what the error might be +if it wishes to continue using these functions. +.P +The +\fIdbm_delete\fR() +function need not physically reclaim file space, although it does make +it available for reuse by the database. +.P +After calling +\fIdbm_store\fR() +or +\fIdbm_delete\fR() +during a pass through the keys by +\fIdbm_firstkey\fR() +and +\fIdbm_nextkey\fR(), +the application should reset the database by calling +\fIdbm_firstkey\fR() +before again calling +\fIdbm_nextkey\fR(). +The contents of these files are unspecified and may not be portable. +.P +Applications should take care that database pathname arguments +specified to +\fIdbm_open\fR() +are not prefixes of unrelated files. This might be done, for example, +by placing databases in a separate directory. +.P +Since some implementations use three characters for a suffix and others +use four characters for a suffix, applications should ensure that the +maximum portable pathname length passed to +\fIdbm_open\fR() +is no greater than +{PATH_MAX}\-4 +bytes, with the last component of the pathname no greater than +{NAME_MAX}\-4 +bytes. +.SH RATIONALE +Previously the standard required the database to be stored in two +files, one file being a directory containing a bitmap of keys and +having +.BR .dir +as its suffix. The second file containing all data and having +.BR .pag +as its suffix. This has been changed not to specify the use of the +files and to allow newer implementations of the Berkeley DB interface +using a single file that have evolved while remaining compatible with +the application programming interface. The standard developers +considered removing the specific suffixes altogether but decided to +retain them so as not to pollute the application file name space more +than necessary and to allow for portable backups of the database. +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "\fIopen\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<ndbm.h>\fP" +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |