Browse Source

Sync hcreate(3) with NetBSD, adding some caveats.

OK jmc
OPENBSD_4_8
ray 14 years ago
parent
commit
12d761c542
1 changed files with 67 additions and 12 deletions
  1. +67
    -12
      src/lib/libc/stdlib/hcreate.3

+ 67
- 12
src/lib/libc/stdlib/hcreate.3 View File

@ -1,5 +1,5 @@
.\" $OpenBSD: hcreate.3,v 1.5 2008/06/26 05:42:05 ray Exp $
.\" $NetBSD: hcreate.3,v 1.6 2003/04/16 13:34:46 wiz Exp $
.\" $OpenBSD: hcreate.3,v 1.6 2010/07/28 09:00:20 ray Exp $
.\" $NetBSD: hcreate.3,v 1.8 2010/05/01 06:18:03 jruoho Exp $
.\" .\"
.\" Copyright (c) 1999 The NetBSD Foundation, Inc. .\" Copyright (c) 1999 The NetBSD Foundation, Inc.
.\" All rights reserved. .\" All rights reserved.
@ -28,7 +28,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE. .\" POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: June 26 2008 $
.Dd $Mdocdate: July 28 2010 $
.Dt HCREATE 3 .Dt HCREATE 3
.Os .Os
.Sh NAME .Sh NAME
@ -84,15 +84,18 @@ hash table indicating the address of an item.
The The
.Fa item .Fa item
argument is of type argument is of type
.Dv ENTRY ,
a structural type which contains the following members:
.Vt ENTRY ,
defined in the
.In search.h
header.
This is a structure type that contains two pointers:
.Pp .Pp
.Bl -tag -compact -offset indent -width voidX*dataXX
.Bl -tag -compact -offset indent -width "void *data "
.It Fa char *key .It Fa char *key
comparison key.
comparison key
.It Fa void *data .It Fa void *data
pointer to data associated with pointer to data associated with
.Fa key .
.Fa key
.El .El
.Pp .Pp
The key comparison function used by The key comparison function used by
@ -103,7 +106,7 @@ is
The The
.Fa action .Fa action
argument is of type argument is of type
.Dv ACTION ,
.Vt ACTION ,
an enumeration type which defines the following values: an enumeration type which defines the following values:
.Bl -tag -offset indent -width ENTERXX .Bl -tag -offset indent -width ENTERXX
.It Dv ENTER .It Dv ENTER
@ -124,6 +127,30 @@ key must not be modified during the lifetime of the hash table.
Search the hash table without inserting Search the hash table without inserting
.Fa item . .Fa item .
.El .El
.Pp
Note that the comparison
.Fa key
must be allocated using
.Xr malloc 3
or
.Xr calloc 3
if action is
.Dv ENTER
and
.Fn hdestroy
will be called.
This is because
.Fn hdestroy
will call
.Xr free 3
for each comparison
.Fa key
(but not
.Fa data ) .
Typically the comparison
.Fa key
is allocated by using
.Xr strdup 3 .
.Sh RETURN VALUES .Sh RETURN VALUES
If successful, the If successful, the
.Fn hcreate .Fn hcreate
@ -170,8 +197,13 @@ Insufficient memory is available.
.Xr malloc 3 , .Xr malloc 3 ,
.Xr strcmp 3 .Xr strcmp 3
.Sh STANDARDS .Sh STANDARDS
These functions conform to
.St -p1003.1-2004 .
The
.Fn hcreate ,
.Fn hdestroy
and
.Fn hsearch
functions conform to
.St -xpg4.2 .
.Sh HISTORY .Sh HISTORY
The The
.Fn hcreate , .Fn hcreate ,
@ -180,5 +212,28 @@ and
.Fn hsearch .Fn hsearch
functions first appeared in functions first appeared in
.At V . .At V .
.Sh BUGS
.Sh CAVEATS
At least the following limitations can be mentioned:
.Bl -bullet
.It
The interface permits the use of only one hash table at a time. The interface permits the use of only one hash table at a time.
.It
Individual hash table entries can be added, but not deleted.
.It
The standard is indecipherable about the
internal memory usage of the functions,
mentioning only that
.Do
.Fn hcreate
and
.Fn hsearch
functions may use
.Fn malloc
to allocate space
.Dc .
This limits the portability of the functions,
given that other implementations may not
.Xr free 3
the buffer pointed by
.Fa key .
.El

Loading…
Cancel
Save