778 lines
16 KiB
HTML
778 lines
16 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of DBOPEN</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>DBOPEN</H1>
|
|
Section: Linux Programmer's Manual (3)<BR>Updated: 2017-09-15<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAME</H2>
|
|
|
|
dbopen - database access methods
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
<PRE>
|
|
<B>#include <<A HREF="file:///usr/include/sys/types.h">sys/types.h</A>></B>
|
|
<B>#include <<A HREF="file:///usr/include/limits.h">limits.h</A>></B>
|
|
<B>#include <<A HREF="file:///usr/include/db.h">db.h</A>></B>
|
|
<B>#include <<A HREF="file:///usr/include/fcntl.h">fcntl.h</A>></B>
|
|
|
|
<B>DB *dbopen(const char *</B><I>file</I><B>, int </B><I>flags</I><B>, int </B><I>mode</I><B>, DBTYPE </B><I>type</I><B>,</B>
|
|
<B> const void *</B><I>openinfo</I><B>);</B>
|
|
</PRE>
|
|
|
|
<A NAME="lbAD"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
<I>Note well</I>:
|
|
|
|
This page documents interfaces provided in glibc up until version 2.1.
|
|
Since version 2.2, glibc no longer provides these interfaces.
|
|
Probably, you are looking for the APIs provided by the
|
|
<I>libdb</I>
|
|
|
|
library instead.
|
|
<P>
|
|
|
|
<B>dbopen</B>()
|
|
|
|
is the library interface to database files.
|
|
The supported file formats are btree, hashed and UNIX file oriented.
|
|
The btree format is a representation of a sorted, balanced tree structure.
|
|
The hashed format is an extensible, dynamic hashing scheme.
|
|
The flat-file format is a byte stream file with fixed or variable length
|
|
records.
|
|
The formats and file-format-specific information are described in detail
|
|
in their respective manual pages
|
|
<B><A HREF="/cgi-bin/man/man2html?3+btree">btree</A></B>(3),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+hash">hash</A></B>(3),
|
|
|
|
and
|
|
<B><A HREF="/cgi-bin/man/man2html?3+recno">recno</A></B>(3).
|
|
|
|
<P>
|
|
|
|
<B>dbopen</B>()
|
|
|
|
opens
|
|
<I>file</I>
|
|
|
|
for reading and/or writing.
|
|
Files never intended to be preserved on disk may be created by setting
|
|
the
|
|
<I>file</I>
|
|
|
|
argument to NULL.
|
|
<P>
|
|
|
|
The
|
|
<I>flags</I>
|
|
|
|
and
|
|
<I>mode</I>
|
|
|
|
arguments are as specified to the
|
|
<B><A HREF="/cgi-bin/man/man2html?2+open">open</A></B>(2)
|
|
|
|
routine, however, only the
|
|
<B>O_CREAT</B>,
|
|
|
|
<B>O_EXCL</B>,
|
|
|
|
<B>O_EXLOCK</B>,
|
|
|
|
<B>O_NONBLOCK</B>,
|
|
|
|
<B>O_RDONLY</B>,
|
|
|
|
<B>O_RDWR</B>,
|
|
|
|
<B>O_SHLOCK</B>,
|
|
|
|
and
|
|
<B>O_TRUNC</B>
|
|
|
|
flags are meaningful.
|
|
(Note, opening a database file
|
|
<B>O_WRONLY</B>
|
|
|
|
is not possible.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
The
|
|
<I>type</I>
|
|
|
|
argument is of type
|
|
<I>DBTYPE</I>
|
|
|
|
(as defined in the
|
|
<I><<A HREF="file:///usr/include/db.h">db.h</A>></I>
|
|
|
|
include file) and
|
|
may be set to
|
|
<B>DB_BTREE</B>,
|
|
|
|
<B>DB_HASH</B>,
|
|
|
|
or
|
|
<B>DB_RECNO</B>.
|
|
|
|
<P>
|
|
|
|
The
|
|
<I>openinfo</I>
|
|
|
|
argument is a pointer to an access-method-specific structure described
|
|
in the access method's manual page.
|
|
If
|
|
<I>openinfo</I>
|
|
|
|
is NULL, each access method will use defaults appropriate for the system
|
|
and the access method.
|
|
<P>
|
|
|
|
<B>dbopen</B>()
|
|
|
|
returns a pointer to a
|
|
<I>DB</I>
|
|
|
|
structure on success and NULL on error.
|
|
The
|
|
<I>DB</I>
|
|
|
|
structure is defined in the
|
|
<I><<A HREF="file:///usr/include/db.h">db.h</A>></I>
|
|
|
|
include file, and contains at
|
|
least the following fields:
|
|
<P>
|
|
|
|
|
|
|
|
typedef struct {
|
|
<BR> DBTYPE type;
|
|
<BR> int (*close)(const DB *db);
|
|
<BR> int (*del)(const DB *db, const DBT *key, unsigned int flags);
|
|
<BR> int (*fd)(const DB *db);
|
|
<BR> int (*get)(const DB *db, DBT *key, DBT *data,
|
|
<BR> unsigned int flags);
|
|
<BR> int (*put)(const DB *db, DBT *key, const DBT *data,
|
|
<BR> unsigned int flags);
|
|
<BR> int (*sync)(const DB *db, unsigned int flags);
|
|
<BR> int (*seq)(const DB *db, DBT *key, DBT *data,
|
|
<BR> unsigned int flags);
|
|
} DB;
|
|
|
|
|
|
<P>
|
|
|
|
These elements describe a database type and a set of functions performing
|
|
various actions.
|
|
These functions take a pointer to a structure as returned by
|
|
<B>dbopen</B>(),
|
|
|
|
and sometimes one or more pointers to key/data structures and a flag value.
|
|
<DL COMPACT>
|
|
<DT id="1"><I>type</I>
|
|
|
|
<DD>
|
|
The type of the underlying access method (and file format).
|
|
<DT id="2"><I>close</I>
|
|
|
|
<DD>
|
|
A pointer to a routine to flush any cached information to disk, free any
|
|
allocated resources, and close the underlying file(s).
|
|
Since key/data pairs may be cached in memory, failing to sync the file
|
|
with a
|
|
<I>close</I>
|
|
|
|
or
|
|
<I>sync</I>
|
|
|
|
function may result in inconsistent or lost information.
|
|
<I>close</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>)
|
|
|
|
and 0 on success.
|
|
<DT id="3"><I>del</I>
|
|
|
|
<DD>
|
|
A pointer to a routine to remove key/data pairs from the database.
|
|
<DT id="4"><DD>
|
|
The argument
|
|
<I>flag</I>
|
|
|
|
may be set to the following value:
|
|
<DL COMPACT><DT id="5"><DD>
|
|
<DL COMPACT>
|
|
<DT id="6"><B>R_CURSOR</B>
|
|
|
|
<DD>
|
|
Delete the record referenced by the cursor.
|
|
The cursor must have previously been initialized.
|
|
</DL>
|
|
</DL>
|
|
|
|
<DT id="7"><DD>
|
|
<I>delete</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>),
|
|
|
|
0 on success, and 1 if the specified
|
|
<I>key</I>
|
|
|
|
was not in the file.
|
|
<DT id="8"><I>fd</I>
|
|
|
|
<DD>
|
|
A pointer to a routine which returns a file descriptor representative
|
|
of the underlying database.
|
|
A file descriptor referencing the same file will be returned to all
|
|
processes which call
|
|
<B>dbopen</B>()
|
|
|
|
with the same
|
|
<I>file</I>
|
|
|
|
name.
|
|
This file descriptor may be safely used as an argument to the
|
|
<B><A HREF="/cgi-bin/man/man2html?2+fcntl">fcntl</A></B>(2)
|
|
|
|
and
|
|
<B><A HREF="/cgi-bin/man/man2html?2+flock">flock</A></B>(2)
|
|
|
|
locking functions.
|
|
The file descriptor is not necessarily associated with any of the
|
|
underlying files used by the access method.
|
|
No file descriptor is available for in memory databases.
|
|
<I>fd</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>),
|
|
|
|
and the file descriptor on success.
|
|
<DT id="9"><I>get</I>
|
|
|
|
<DD>
|
|
A pointer to a routine which is the interface for keyed retrieval from
|
|
the database.
|
|
The address and length of the data associated with the specified
|
|
<I>key</I>
|
|
|
|
are returned in the structure referenced by
|
|
<I>data</I>.
|
|
|
|
<I>get</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>),
|
|
|
|
0 on success, and 1 if the
|
|
<I>key</I>
|
|
|
|
was not in the file.
|
|
<DT id="10"><I>put</I>
|
|
|
|
<DD>
|
|
A pointer to a routine to store key/data pairs in the database.
|
|
<DT id="11"><DD>
|
|
The argument
|
|
<I>flag</I>
|
|
|
|
may be set to one of the following values:
|
|
<DL COMPACT><DT id="12"><DD>
|
|
<DL COMPACT>
|
|
<DT id="13"><B>R_CURSOR</B>
|
|
|
|
<DD>
|
|
Replace the key/data pair referenced by the cursor.
|
|
The cursor must have previously been initialized.
|
|
<DT id="14"><B>R_IAFTER</B>
|
|
|
|
<DD>
|
|
Append the data immediately after the data referenced by
|
|
<I>key</I>,
|
|
|
|
creating a new key/data pair.
|
|
The record number of the appended key/data pair is returned in the
|
|
<I>key</I>
|
|
|
|
structure.
|
|
(Applicable only to the
|
|
<B>DB_RECNO</B>
|
|
|
|
access method.)
|
|
<DT id="15"><B>R_IBEFORE</B>
|
|
|
|
<DD>
|
|
Insert the data immediately before the data referenced by
|
|
<I>key</I>,
|
|
|
|
creating a new key/data pair.
|
|
The record number of the inserted key/data pair is returned in the
|
|
<I>key</I>
|
|
|
|
structure.
|
|
(Applicable only to the
|
|
<B>DB_RECNO</B>
|
|
|
|
access method.)
|
|
<DT id="16"><B>R_NOOVERWRITE</B>
|
|
|
|
<DD>
|
|
Enter the new key/data pair only if the key does not previously exist.
|
|
<DT id="17"><B>R_SETCURSOR</B>
|
|
|
|
<DD>
|
|
Store the key/data pair, setting or initializing the position of the
|
|
cursor to reference it.
|
|
(Applicable only to the
|
|
<B>DB_BTREE</B>
|
|
|
|
and
|
|
<B>DB_RECNO</B>
|
|
|
|
access methods.)
|
|
</DL>
|
|
</DL>
|
|
|
|
<DT id="18"><DD>
|
|
<B>R_SETCURSOR</B>
|
|
|
|
is available only for the
|
|
<B>DB_BTREE</B>
|
|
|
|
and
|
|
<B>DB_RECNO</B>
|
|
|
|
access
|
|
methods because it implies that the keys have an inherent order
|
|
which does not change.
|
|
<DT id="19"><DD>
|
|
<B>R_IAFTER</B>
|
|
|
|
and
|
|
<B>R_IBEFORE</B>
|
|
|
|
are available only for the
|
|
<B>DB_RECNO</B>
|
|
|
|
access method because they each imply that the access method is able to
|
|
create new keys.
|
|
This is true only if the keys are ordered and independent, record numbers
|
|
for example.
|
|
<DT id="20"><DD>
|
|
The default behavior of the
|
|
<I>put</I>
|
|
|
|
routines is to enter the new key/data pair, replacing any previously
|
|
existing key.
|
|
<DT id="21"><DD>
|
|
<I>put</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>),
|
|
|
|
0 on success, and 1 if the
|
|
<B>R_NOOVERWRITE</B>
|
|
|
|
<I>flag</I>
|
|
|
|
was set and the key already exists in the file.
|
|
<DT id="22"><I>seq</I>
|
|
|
|
<DD>
|
|
A pointer to a routine which is the interface for sequential
|
|
retrieval from the database.
|
|
The address and length of the key are returned in the structure
|
|
referenced by
|
|
<I>key</I>,
|
|
|
|
and the address and length of the data are returned in the
|
|
structure referenced
|
|
by
|
|
<I>data</I>.
|
|
|
|
<DT id="23"><DD>
|
|
Sequential key/data pair retrieval may begin at any time, and the
|
|
position of the "cursor" is not affected by calls to the
|
|
<I>del</I>,
|
|
|
|
<I>get</I>,
|
|
|
|
<I>put</I>,
|
|
|
|
or
|
|
<I>sync</I>
|
|
|
|
routines.
|
|
Modifications to the database during a sequential scan will be reflected
|
|
in the scan, that is,
|
|
records inserted behind the cursor will not be returned
|
|
while records inserted in front of the cursor will be returned.
|
|
<DT id="24"><DD>
|
|
The flag value
|
|
<B>must</B>
|
|
|
|
be set to one of the following values:
|
|
<DL COMPACT><DT id="25"><DD>
|
|
<DL COMPACT>
|
|
<DT id="26"><B>R_CURSOR</B>
|
|
|
|
<DD>
|
|
The data associated with the specified key is returned.
|
|
This differs from the
|
|
<I>get</I>
|
|
|
|
routines in that it sets or initializes the cursor to the location of
|
|
the key as well.
|
|
(Note, for the
|
|
<B>DB_BTREE</B>
|
|
|
|
access method, the returned key is not necessarily an
|
|
exact match for the specified key.
|
|
The returned key is the smallest key greater than or equal to the specified
|
|
key, permitting partial key matches and range searches.)
|
|
<DT id="27"><B>R_FIRST</B>
|
|
|
|
<DD>
|
|
The first key/data pair of the database is returned, and the cursor
|
|
is set or initialized to reference it.
|
|
<DT id="28"><B>R_LAST</B>
|
|
|
|
<DD>
|
|
The last key/data pair of the database is returned, and the cursor
|
|
is set or initialized to reference it.
|
|
(Applicable only to the
|
|
<B>DB_BTREE</B>
|
|
|
|
and
|
|
<B>DB_RECNO</B>
|
|
|
|
access methods.)
|
|
<DT id="29"><B>R_NEXT</B>
|
|
|
|
<DD>
|
|
Retrieve the key/data pair immediately after the cursor.
|
|
If the cursor is not yet set, this is the same as the
|
|
<B>R_FIRST</B>
|
|
|
|
flag.
|
|
<DT id="30"><B>R_PREV</B>
|
|
|
|
<DD>
|
|
Retrieve the key/data pair immediately before the cursor.
|
|
If the cursor is not yet set, this is the same as the
|
|
<B>R_LAST</B>
|
|
|
|
flag.
|
|
(Applicable only to the
|
|
<B>DB_BTREE</B>
|
|
|
|
and
|
|
<B>DB_RECNO</B>
|
|
|
|
access methods.)
|
|
</DL>
|
|
</DL>
|
|
|
|
<DT id="31"><DD>
|
|
<B>R_LAST</B>
|
|
|
|
and
|
|
<B>R_PREV</B>
|
|
|
|
are available only for the
|
|
<B>DB_BTREE</B>
|
|
|
|
and
|
|
<B>DB_RECNO</B>
|
|
|
|
access methods because they each imply that the keys have an inherent
|
|
order which does not change.
|
|
<DT id="32"><DD>
|
|
<I>seq</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>),
|
|
|
|
0 on success and 1 if there are no key/data pairs less than or greater
|
|
than the specified or current key.
|
|
If the
|
|
<B>DB_RECNO</B>
|
|
|
|
access method is being used, and if the database file
|
|
is a character special file and no complete key/data pairs are currently
|
|
available, the
|
|
<I>seq</I>
|
|
|
|
routines return 2.
|
|
<DT id="33"><I>sync</I>
|
|
|
|
<DD>
|
|
A pointer to a routine to flush any cached information to disk.
|
|
If the database is in memory only, the
|
|
<I>sync</I>
|
|
|
|
routine has no effect and will always succeed.
|
|
<DT id="34"><DD>
|
|
The flag value may be set to the following value:
|
|
<DL COMPACT><DT id="35"><DD>
|
|
<DL COMPACT>
|
|
<DT id="36"><B>R_RECNOSYNC</B>
|
|
|
|
<DD>
|
|
If the
|
|
<B>DB_RECNO</B>
|
|
|
|
access method is being used, this flag causes
|
|
the sync routine to apply to the btree file which underlies the
|
|
recno file, not the recno file itself.
|
|
(See the
|
|
<I>bfname</I>
|
|
|
|
field of the
|
|
<B><A HREF="/cgi-bin/man/man2html?3+recno">recno</A></B>(3)
|
|
|
|
manual page for more information.)
|
|
</DL>
|
|
</DL>
|
|
|
|
<DT id="37"><DD>
|
|
<I>sync</I>
|
|
|
|
routines return -1 on error (setting
|
|
<I>errno</I>)
|
|
|
|
and 0 on success.
|
|
</DL>
|
|
<A NAME="lbAE"> </A>
|
|
<H3>Key/data pairs</H3>
|
|
|
|
Access to all file types is based on key/data pairs.
|
|
Both keys and data are represented by the following data structure:
|
|
<P>
|
|
|
|
|
|
|
|
typedef struct {
|
|
<BR> void *data;
|
|
<BR> size_t size;
|
|
} DBT;
|
|
|
|
|
|
<P>
|
|
|
|
The elements of the
|
|
<I>DBT</I>
|
|
|
|
structure are defined as follows:
|
|
<DL COMPACT>
|
|
<DT id="38"><I>data</I>
|
|
|
|
<DD>
|
|
A pointer to a byte string.
|
|
<DT id="39"><I>size</I>
|
|
|
|
<DD>
|
|
The length of the byte string.
|
|
</DL>
|
|
<P>
|
|
|
|
Key and data byte strings may reference strings of essentially unlimited
|
|
length although any two of them must fit into available memory at the same
|
|
time.
|
|
It should be noted that the access methods provide no guarantees about
|
|
byte string alignment.
|
|
<A NAME="lbAF"> </A>
|
|
<H2>ERRORS</H2>
|
|
|
|
The
|
|
<B>dbopen</B>()
|
|
|
|
routine may fail and set
|
|
<I>errno</I>
|
|
|
|
for any of the errors specified for the library routines
|
|
<B><A HREF="/cgi-bin/man/man2html?2+open">open</A></B>(2)
|
|
|
|
and
|
|
<B><A HREF="/cgi-bin/man/man2html?3+malloc">malloc</A></B>(3)
|
|
|
|
or the following:
|
|
<DL COMPACT>
|
|
<DT id="40"><B>EFTYPE</B>
|
|
|
|
<DD>
|
|
A file is incorrectly formatted.
|
|
<DT id="41"><B>EINVAL</B>
|
|
|
|
<DD>
|
|
A parameter has been specified (hash function, pad byte, etc.) that is
|
|
incompatible with the current file specification or which is not
|
|
meaningful for the function (for example, use of the cursor without
|
|
prior initialization) or there is a mismatch between the version
|
|
number of file and the software.
|
|
</DL>
|
|
<P>
|
|
|
|
The
|
|
<I>close</I>
|
|
|
|
routines may fail and set
|
|
<I>errno</I>
|
|
|
|
for any of the errors specified for the library routines
|
|
<B><A HREF="/cgi-bin/man/man2html?2+close">close</A></B>(2),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?2+read">read</A></B>(2),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?2+write">write</A></B>(2),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+free">free</A></B>(3),
|
|
|
|
or
|
|
<B><A HREF="/cgi-bin/man/man2html?2+fsync">fsync</A></B>(2).
|
|
|
|
<P>
|
|
|
|
The
|
|
<I>del</I>,
|
|
|
|
<I>get</I>,
|
|
|
|
<I>put</I>,
|
|
|
|
and
|
|
<I>seq</I>
|
|
|
|
routines may fail and set
|
|
<I>errno</I>
|
|
|
|
for any of the errors specified for the library routines
|
|
<B><A HREF="/cgi-bin/man/man2html?2+read">read</A></B>(2),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?2+write">write</A></B>(2),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+free">free</A></B>(3)
|
|
|
|
or
|
|
<B><A HREF="/cgi-bin/man/man2html?3+malloc">malloc</A></B>(3).
|
|
|
|
<P>
|
|
|
|
The
|
|
<I>fd</I>
|
|
|
|
routines will fail and set
|
|
<I>errno</I>
|
|
|
|
to
|
|
<B>ENOENT</B>
|
|
|
|
for in memory databases.
|
|
<P>
|
|
|
|
The
|
|
<I>sync</I>
|
|
|
|
routines may fail and set
|
|
<I>errno</I>
|
|
|
|
for any of the errors specified for the library routine
|
|
<B><A HREF="/cgi-bin/man/man2html?2+fsync">fsync</A></B>(2).
|
|
|
|
<A NAME="lbAG"> </A>
|
|
<H2>BUGS</H2>
|
|
|
|
The typedef
|
|
<I>DBT</I>
|
|
|
|
is a mnemonic for "data base thang", and was used
|
|
because no one could think of a reasonable name that wasn't already used.
|
|
<P>
|
|
|
|
The file descriptor interface is a kludge and will be deleted in a
|
|
future version of the interface.
|
|
<P>
|
|
|
|
None of the access methods provide any form of concurrent access,
|
|
locking, or transactions.
|
|
<A NAME="lbAH"> </A>
|
|
<H2>SEE ALSO</H2>
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+btree">btree</A></B>(3),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+hash">hash</A></B>(3),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+mpool">mpool</A></B>(3),
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?3+recno">recno</A></B>(3)
|
|
|
|
<P>
|
|
|
|
<I>LIBTP: Portable, Modular Transactions for UNIX</I>,
|
|
|
|
Margo Seltzer, Michael Olson, USENIX proceedings, Winter 1992.
|
|
<A NAME="lbAI"> </A>
|
|
<H2>COLOPHON</H2>
|
|
|
|
This page is part of release 5.05 of the Linux
|
|
<I>man-pages</I>
|
|
|
|
project.
|
|
A description of the project,
|
|
information about reporting bugs,
|
|
and the latest version of this page,
|
|
can be found at
|
|
<A HREF="https://www.kernel.org/doc/man-pages/.">https://www.kernel.org/doc/man-pages/.</A>
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="42"><A HREF="#lbAB">NAME</A><DD>
|
|
<DT id="43"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="44"><A HREF="#lbAD">DESCRIPTION</A><DD>
|
|
<DL>
|
|
<DT id="45"><A HREF="#lbAE">Key/data pairs</A><DD>
|
|
</DL>
|
|
<DT id="46"><A HREF="#lbAF">ERRORS</A><DD>
|
|
<DT id="47"><A HREF="#lbAG">BUGS</A><DD>
|
|
<DT id="48"><A HREF="#lbAH">SEE ALSO</A><DD>
|
|
<DT id="49"><A HREF="#lbAI">COLOPHON</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:38 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|