Back to index

openldap  2.4.31
Functions
getentry.c File Reference
#include "portable.h"
#include <stdio.h>
#include <ac/stdlib.h>
#include <ac/socket.h>
#include <ac/string.h>
#include <ac/time.h>
#include "ldap-int.h"

Go to the source code of this file.

Functions

LDAPMessage * ldap_first_entry (LDAP *ld, LDAPMessage *chain)
LDAPMessage * ldap_next_entry (LDAP *ld, LDAPMessage *entry)
int ldap_count_entries (LDAP *ld, LDAPMessage *chain)
int ldap_get_entry_controls (LDAP *ld, LDAPMessage *entry, LDAPControl ***sctrls)

Function Documentation

int ldap_count_entries ( LDAP *  ld,
LDAPMessage *  chain 
)

Definition at line 64 of file getentry.c.

{
       int    i;

       assert( ld != NULL );
       assert( LDAP_VALID( ld ) );

       for ( i = 0; chain != NULL; chain = chain->lm_chain ) {
              if( chain->lm_msgtype == LDAP_RES_SEARCH_ENTRY ) {
                     i++;
              }
       }

       return( i );
}

Here is the caller graph for this function:

LDAPMessage* ldap_first_entry ( LDAP *  ld,
LDAPMessage *  chain 
)

Definition at line 32 of file getentry.c.

{
       assert( ld != NULL );
       assert( LDAP_VALID( ld ) );
       assert( chain != NULL );

       return chain->lm_msgtype == LDAP_RES_SEARCH_ENTRY
              ? chain
              : ldap_next_entry( ld, chain );
}

Here is the call graph for this function:

Here is the caller graph for this function:

int ldap_get_entry_controls ( LDAP *  ld,
LDAPMessage *  entry,
LDAPControl ***  sctrls 
)

Definition at line 81 of file getentry.c.

{
       int rc;
       BerElement be;

       assert( ld != NULL );
       assert( LDAP_VALID( ld ) );
       assert( entry != NULL );
       assert( sctrls != NULL );

       if ( entry->lm_msgtype != LDAP_RES_SEARCH_ENTRY ) {
              return LDAP_PARAM_ERROR;
       }

       /* make a local copy of the BerElement */
       AC_MEMCPY(&be, entry->lm_ber, sizeof(be));

       if ( ber_scanf( &be, "{xx" /*}*/ ) == LBER_ERROR ) {
              rc = LDAP_DECODING_ERROR;
              goto cleanup_and_return;
       }

       rc = ldap_pvt_get_controls( &be, sctrls );

cleanup_and_return:
       if( rc != LDAP_SUCCESS ) {
              ld->ld_errno = rc;

              if( ld->ld_matched != NULL ) {
                     LDAP_FREE( ld->ld_matched );
                     ld->ld_matched = NULL;
              }

              if( ld->ld_error != NULL ) {
                     LDAP_FREE( ld->ld_error );
                     ld->ld_error = NULL;
              }
       }

       return rc;
}

Here is the call graph for this function:

Here is the caller graph for this function:

LDAPMessage* ldap_next_entry ( LDAP *  ld,
LDAPMessage *  entry 
)

Definition at line 44 of file getentry.c.

{
       assert( ld != NULL );
       assert( LDAP_VALID( ld ) );
       assert( entry != NULL );

       for(
              entry = entry->lm_chain;
              entry != NULL;
              entry = entry->lm_chain )
       {
              if( entry->lm_msgtype == LDAP_RES_SEARCH_ENTRY ) {
                     return( entry );
              }
       }

       return( NULL );
}

Here is the caller graph for this function: