ldap_first_attribute, ldap_next_attribute - step through LDAP entry attributes
OpenLDAP LDAP (libldap, -lldap)
#include <ldap.h>
char *ldap_first_attribute(
LDAP *ld, LDAPMessage *entry, BerElement **berptr )
char *ldap_next_attribute(
LDAP *ld, LDAPMessage *entry, BerElement *ber )
int ldap_get_attribute_ber(
LDAP *ld, LDAPMessage *entry, BerElement *ber,
BerValue *attr, BerVarray *vals )
The
ldap_first_attribute(),
ldap_next_attribute() and
ldap_get_attribute_ber() routines are used to step through the
attributes in an LDAP entry.
ldap_first_attribute() takes an
entry as returned by
ldap_first_entry(3) or
ldap_next_entry(3) and returns a pointer to character string containing
the first attribute description in the entry.
ldap_next_attribute()
returns the next attribute description in the entry.
It also returns, in
berptr, a pointer to a BerElement it has allocated to
keep track of its current position. This pointer should be passed to
subsequent calls to
ldap_next_attribute() and is used to effectively
step through the entry's attributes. The caller is solely responsible for
freeing the BerElement pointed to by
berptr when it is no longer needed
by calling
ber_free(3). When calling
ber_free(3) in this
instance, be sure the second argument is 0.
The attribute names returned are suitable for inclusion in a call to
ldap_get_values(3) to retrieve the attribute's values.
The
ldap_get_attribute_ber() routine allows one to iterate over all
attributes in-place, without allocating memory to hold text for the attribute
name or its values, if requested. The use case is similar to
ldap_next_attribute() except that the attribute name is returned into
attr and, if
vals is non-NULL, the list of values is stored
there. Both point into the LDAP message and remain valid only while the entry
is valid. The caller is still responsible for freeing
vals with
ldap_memfree(3), if used.
If an error occurs, NULL is returned and the ld_errno field in the
ld
parameter is set to indicate the error. See
ldap_error(3) for a
description of possible error codes.
The
ldap_first_attribute() and
ldap_next_attribute() return
dynamically allocated memory that must be freed by the caller via
ldap_memfree(3). For
ldap_get_attribute_ber(), only the actual
vals pointer needs to be freed with
ldap_memfree(3), other data
is accounted for as part of
ber.
ldap(3),
ldap_first_entry(3),
ldap_get_values(3),
ldap_error(3)
OpenLDAP Software is developed and maintained by The OpenLDAP Project
<
http://www.openldap.org/>.
OpenLDAP Software is derived from the
University of Michigan LDAP 3.3 Release.