lfind man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

LSEARCH(3C)							   LSEARCH(3C)

NAME
       lsearch, lfind - linear search and update

SYNOPSIS
       #include <search.h>

       void *lsearch(const void *key, void *base, size_t *nelp,
	    size_t width, int (*compar)(const void *, const void *));

       void *lfind(const void *key, const void *base, size_t *nelp,
	    size_t width, int (*compar)(const void *, const void *));

DESCRIPTION
       The  lsearch()  function	 is  a	linear search routine generalized from
       Knuth (6.1) Algorithm S. (see The Art of Computer  Programming,	Volume
       3,  Section  6.1, by Donald E. Knuth.). It returns a pointer to a table
       indicating where a datum can be found. If the datum does not occur,  it
       is  added at the end of the table. The key argument points to the datum
       to be sought in the table. The base argument points to the  first  ele‐
       ment  in	 the  table. The nelp argument points to an integer containing
       the current number of elements in the table. The integer is incremented
       if  the	datum is added to the table. The width argument is the size of
       an element in bytes. The compar argument is a pointer to the comparison
       function	 that  the  user  must	supply (strcmp(3C) for example). It is
       called with two arguments that point to the  elements  being  compared.
       The  function  must  return zero if the elements are equal and non-zero
       otherwise.

       The lfind() function is the same as lsearch() except that if the	 datum
       is not found, it is not added to the table.  Instead, a null pointer is
       returned.

       It is important to note the following:

	   o	  The pointers to the key and the element at the base  of  the
		  table can be pointers to any type.

	   o	  The  comparison  function  need  not	compare every byte, so
		  arbitrary data can be contained in the elements in  addition
		  to the values being compared.

	   o	  The  value returned should be cast into type pointer-to-ele‐
		  ment.

RETURN VALUES
       If the searched-for datum is found, both lsearch() and  lfind()	return
       a  pointer to it. Otherwise, lfind() returns NULL and lsearch() returns
       a pointer to the newly added element.

USAGE
       Undefined results can occur if there is not enough room in the table to
       add a new item.

       The  lsearch() and lfind() functions safely allows concurrent access by
       multiple threads to disjoint data,  such	 as  overlapping  subtrees  or
       tables.

EXAMPLES
       Example 1 A sample code using the lsearch() function.

       This program will read in less than TABSIZE strings of length less than
       ELSIZE and store them in a table, eliminating duplicates, and then will
       print each entry.

	 #include <search.h>
	 #include <string.h>
	 #include <stdlib.h>
	 #include <stdio.h>

	 #define TABSIZE 50
	 #define ELSIZE 120

	 main()
	 {
	     char line[ELSIZE];		 /* buffer to hold input string */
	     char tab[TABSIZE][ELSIZE];	 /* table of strings */
	     size_t nel = 0;		 /* number of entries in tab */
	     int i;

	     while (fgets(line, ELSIZE, stdin) != NULL &&
		     nel < TABSIZE)
		     (void) lsearch(line, tab, &nel, ELSIZE, mycmp);
	     for( i = 0; i < nel; i++ )
		     (void)fputs(tab[i], stdout);
	     return 0;
	 }

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬─────────────────┐
       │  ATTRIBUTE TYPE    │ ATTRIBUTE VALUE │
       ├────────────────────┼─────────────────┤
       │Interface Stability │ Standard	      │
       ├────────────────────┼─────────────────┤
       │MT-Level	    │ MT-Safe	      │
       └────────────────────┴─────────────────┘

SEE ALSO
       bsearch(3C), hsearch(3C), string(3C), tsearch(3C), attributes(5), stan‐
       dards(5)

       The Art of Computer Programming, Volume 3,  Sorting  and	 Searching  by
       Donald E. Knuth, published by Addison-Wesley Publishing Company, 1973.

				  Dec 6, 2004			   LSEARCH(3C)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net