2 * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
3 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
6 * Copyright (c) 1990 Regents of the University of Michigan.
15 #include <ac/stdlib.h>
18 #include <ac/socket.h>
19 #include <ac/string.h>
26 ldap_first_entry( LDAP *ld, LDAPMessage *chain )
29 assert( LDAP_VALID( ld ) );
31 if( ld == NULL || chain == NULL ) {
35 return chain->lm_msgtype == LDAP_RES_SEARCH_ENTRY
37 : ldap_next_entry( ld, chain );
41 ldap_next_entry( LDAP *ld, LDAPMessage *entry )
44 assert( LDAP_VALID( ld ) );
46 if ( ld == NULL || entry == NULL ) {
51 entry = entry->lm_chain;
53 entry = entry->lm_chain )
55 if( entry->lm_msgtype == LDAP_RES_SEARCH_ENTRY ) {
64 ldap_count_entries( LDAP *ld, LDAPMessage *chain )
69 assert( LDAP_VALID( ld ) );
75 for ( i = 0; chain != NULL; chain = chain->lm_chain ) {
76 if( chain->lm_msgtype == LDAP_RES_SEARCH_ENTRY ) {
85 ldap_get_entry_controls(
88 LDAPControl ***sctrls )
94 assert( LDAP_VALID( ld ) );
95 assert( entry != NULL );
96 assert( sctrls != NULL );
98 if ( ld == NULL || sctrls == NULL ||
99 entry == NULL || entry->lm_msgtype == LDAP_RES_SEARCH_ENTRY )
101 return LDAP_PARAM_ERROR;
104 /* make a local copy of the BerElement */
105 SAFEMEMCPY(&be, entry->lm_ber, sizeof(be));
107 if ( ber_scanf( &be, "{xx" /*}*/ ) == LBER_ERROR ) {
108 rc = LDAP_DECODING_ERROR;
109 goto cleanup_and_return;
112 rc = ldap_int_get_controls( &be, sctrls );
115 if( rc != LDAP_SUCCESS ) {
118 if( ld->ld_matched != NULL ) {
119 LDAP_FREE( ld->ld_matched );
120 ld->ld_matched = NULL;
123 if( ld->ld_error != NULL ) {
124 LDAP_FREE( ld->ld_error );