libowfat/cdb/cdb_find.3

43 lines
1.2 KiB
Groff
Raw Normal View History

2005-11-25 15:02:31 +00:00
.TH cdb_find 3
.SH NAME
cdb_find \- look up a key in a constant database
.SH SYNTAX
.B #include <libowfat/cdb.h>
2005-11-25 15:02:31 +00:00
.br
.B #include <libowfat/uint32.h>
2005-11-25 15:02:31 +00:00
int cdb_find(struct cdb *\fIc\fR, char *\fIkey\fR, size_t \fIkeylen\fR);
2005-11-25 15:02:31 +00:00
.br
int cdb_datalen(struct cdb *\fIc\fR);
.br
int cdb_datapos(struct cdb *\fIc\fR);
.br
int cdb_findnext(struct cdb *\fIc\fR, char *\fIkey\fR, size_t \fIkeylen\fR);
2005-11-25 15:02:31 +00:00
.SH DESCRIPTION
\fBcdb_find\fR looks for \fIkey\fR. If cdb_find returns 0, the database
does not contain that key; stop. If cdb_find returns -1, there was a
read error; abort.
\fBcdb_datalen\fR returns the length of the data associated with the
\fIkey\fR. Use it to allocate a pointer \fIp\fR with enough space to
hold the data.
\fBcdb_datapos\fR returns the position of the data inside the file. Use
it as argument to cdb_read to retrieve the data.
There may be several records under a single key. You can use
\fBcdb_findnext\fR to find the next record under this key.
.SH EXAMPLE
static struct c;
2005-11-25 15:02:31 +00:00
if (cdb_find(&c,key,strlen(key)>0) {
char *buf=alloca(cdb_datalen(&c));
cdb_read(&c,buf,cdb_datalen(&c),cdb_datapos(&c));
write(1,buf,cdb_datalen(&c));
.br
}
.SH "SEE ALSO"
cdb_read(3), cdb_init(3), cdb_free(3), cdbmake(1)