2002-10-16 14:29:23 +00:00
|
|
|
.\"
|
|
|
|
.\" Initial implementation:
|
|
|
|
.\" Copyright (c) 2002 Robert Drehmel
|
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" As long as the above copyright statement and this notice remain
|
2002-12-09 13:14:15 +00:00
|
|
|
.\" unchanged, you can do what ever you want with this file.
|
2002-10-16 14:29:23 +00:00
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
|
|
|
.Dd October 11, 2002
|
|
|
|
.Dt LSEARCH 3
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm lsearch ,
|
|
|
|
.Nm lfind
|
|
|
|
.Nd linear search and append
|
|
|
|
.Sh LIBRARY
|
|
|
|
.Lb libc
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.In search.h
|
2002-12-09 13:14:15 +00:00
|
|
|
.Ft "void *"
|
|
|
|
.Fo lsearch
|
|
|
|
.Fa "const void *key" "void *base" "size_t *nelp" "size_t width"
|
|
|
|
.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
|
|
|
|
.Fc
|
|
|
|
.Ft "void *"
|
|
|
|
.Fo lfind
|
|
|
|
.Fa "const void *key" "const void *base" "size_t *nelp" "size_t width"
|
|
|
|
.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
|
|
|
|
.Fc
|
2002-10-16 14:29:23 +00:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
|
|
|
.Fn lsearch
|
|
|
|
and
|
|
|
|
.Fn lfind
|
|
|
|
functions walk linearly through an array and compare each element with
|
|
|
|
the one to be sought using a supplied comparison function.
|
|
|
|
.Pp
|
|
|
|
.Fa key
|
|
|
|
points to an element that matches the one that is searched.
|
2002-12-09 13:14:15 +00:00
|
|
|
The array's address in memory is denoted by the
|
2002-10-16 14:29:23 +00:00
|
|
|
.Fa base
|
|
|
|
argument.
|
2002-12-09 13:14:15 +00:00
|
|
|
The width of one element (i.e., the size as returned by
|
2002-10-16 14:29:23 +00:00
|
|
|
.Fn sizeof )
|
2002-12-09 13:14:15 +00:00
|
|
|
is passed as the
|
|
|
|
.Fa width
|
2002-10-16 14:29:23 +00:00
|
|
|
argument.
|
|
|
|
The number of valid elements contained in the array (not the number of
|
|
|
|
elements the array has space reserved for) is given in the integer pointed
|
|
|
|
to by
|
|
|
|
.Fa nelp .
|
|
|
|
The
|
|
|
|
.Fa compar
|
|
|
|
argument points to a function which compares its two arguments and returns
|
2002-12-09 13:14:15 +00:00
|
|
|
zero if they are matching, and non-zero otherwise.
|
2002-10-16 14:29:23 +00:00
|
|
|
.Pp
|
2002-12-09 13:14:15 +00:00
|
|
|
If no matching element was found in the array,
|
|
|
|
.Fn lsearch
|
2002-10-16 14:29:23 +00:00
|
|
|
copies
|
|
|
|
.Fa key
|
|
|
|
into the position after the last element and increments the
|
|
|
|
integer pointed to by
|
|
|
|
.Fa nelp .
|
|
|
|
.Sh RETURN VALUES
|
2002-12-18 12:45:11 +00:00
|
|
|
The
|
2002-10-16 14:29:23 +00:00
|
|
|
.Fn lsearch
|
|
|
|
and
|
|
|
|
.Fn lfind
|
2002-12-18 12:45:11 +00:00
|
|
|
functions
|
2002-10-16 14:29:23 +00:00
|
|
|
return a pointer to the first element found.
|
|
|
|
If no element was found,
|
|
|
|
.Fn lsearch
|
|
|
|
returns a pointer to the newly added element, whereas
|
|
|
|
.Fn lfind
|
|
|
|
returns
|
|
|
|
.Dv NULL .
|
|
|
|
Both functions return
|
|
|
|
.Dv NULL
|
|
|
|
if an error occurs.
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr bsearch 3 ,
|
|
|
|
.Xr hsearch 3 ,
|
|
|
|
.Xr tsearch 3
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Fn lsearch
|
|
|
|
and
|
|
|
|
.Fn lfind
|
|
|
|
functions appeared in
|
|
|
|
.Bx 4.2 .
|
|
|
|
In
|
|
|
|
.Fx 5.0 ,
|
|
|
|
they reappeared conforming to
|
|
|
|
.St -p1003.1-2001 .
|
|
|
|
.Sh STANDARDS
|
|
|
|
The
|
|
|
|
.Fn lsearch
|
|
|
|
and
|
|
|
|
.Fn lfind
|
|
|
|
functions conform to
|
|
|
|
.St -p1003.1-2001 .
|