Table of Contents | Previous | Next | Index

Netscape Directory SDK 3.0 for C Programmer’s Guide
     Chapter 18 Functions

ldap_search_s()

Searches the directory synchronously.

Note that this is an older function that is included in the LDAP API for backward-compatibility. If you are writing a new LDAP client, use ldap_search_ext_s() instead.

Syntax

#include <ldap.h>
int ldap_search_s( LDAP *ld, const char *base, int scope,
   const char* filter, char **attrs, int attrsonly,
   LDAPMessage **res );

Parameters

This function has the following parameters:

ld

Connection handle, which is a pointer to an LDAP structure containing information about the connection to the LDAP server.

base

Distinguished name (DN) of the entry that serves as the starting point for the search. For example, setting base to "o=Airius.com" restricts the search to entries at Airius.com.

scope

Scope of the search, which can be one of the following values:

filter

String representation of the filter to apply in the search. You can specify simple filters with the following syntax:

For details on the syntax for filters, see "Specifying a Search Filter" on page 113.

attrs

A NULL-terminated array of attribute types to return from entries that match filter. If you specify a NULL, all attributes will be returned.

attrsonly

Specifies whether or not attribute values are returned along with the attribute types. This parameter can have the following values:

res

Results of the search (when the call is completed).

Returns

For a list of possible result codes for an LDAP search operation, see the result code documentation for the ldap_search_ext_s() function.

Description

The ldap_search_s() function searches the directory for matching entries.

A newer version of this function, ldap_search_ext_s(), is available in this release of the LDAP API. ldap_search_s() (the older version of the function) is included only for backward-compatibility. If you are writing a new LDAP client, use ldap_search_ext_s() instead of ldap_search_s().

If you want more information on ldap_search_s(), refer to the LDAP C SDK 1.0 Programmer's Guide.

Example

The following section of code searches the directory for all people whose surname (last name) is "Jensen".

#include "examples.h"
int main( int argc, char **argv )
{
   LDAP *ld;
   LDAPMessage *result, *e;
   BerElement *ber;
   char *a, *dn;
   char **vals;
   int i;
   /* get a handle to an LDAP connection */
   if ( (ld = ldap_init( MY_HOST, MY_PORT )) == NULL ) {
      perror( "ldap_init" );
      return( 1 );
   }
   /* authenticate to the directory as nobody */
   if ( ldap_simple_bind_s( ld, NULL, NULL ) != LDAP_SUCCESS ) {
      ldap_perror( ld, "ldap_simple_bind_s" );
      return( 1 );
   }
   /* search for all entries with surname of Jensen */
   if ( ldap_search_s( ld, MY_SEARCHBASE, LDAP_SCOPE_SUBTREE,
      MY_FILTER, NULL, 0, &result ) != LDAP_SUCCESS ) {
      ldap_perror( ld, "ldap_search_s" );
      return( 1 );
   }
   /* for each entry print out name + all attrs and values */
   for ( e = ldap_first_entry( ld, result ); e != NULL;
    e = ldap_next_entry( ld, e ) ) {
      if ( (dn = ldap_get_dn( ld, e )) != NULL ) {
         printf( "dn: %s\n", dn );
         ldap_memfree( dn );
      }
      for ( a = ldap_first_attribute( ld, e, &ber );
       a != NULL; a = ldap_next_attribute( ld, e, ber ) ) {
         if ((vals = ldap_get_values( ld, e, a)) != NULL ) {
            for ( i = 0; vals[i] != NULL; i++ ) {
               printf( "%s: %s\n", a, vals[i] );
            }
            ldap_value_free( vals );
         }
         ldap_memfree( a );
      }
      if ( ber != NULL ) {
         ldap_ber_free( ber, 0 );
      }
      printf( "\n" );
   }
   ldap_msgfree( result );
   ldap_unbind( ld );
   return( 0 );
}

See Also

ldap_search_ext_s().


Table of Contents | Previous | Next | Index

Last Updated: 10/01/98 17:06:23