ldap_first_attribute, ldap_next_attribute — step through LDAP entry attributes
#include <ldap.h>
| char
            *ldap_first_attribute( | LDAP *ld, | 
| LDAPMessage *entry, | |
| BerElement **berptr ); | 
| char
            *ldap_next_attribute( | LDAP *ld, | 
| LDAPMessage *entry, | |
| BerElement *ber ); | 
The ldap_first_attribute()
      and ldap_next_attribute()
      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.
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).
OpenLDAP Software is developed and maintained by The OpenLDAP Project <http://www.openldap.org/>. OpenLDAP Software is derived from University of Michigan LDAP 3.3 Release.