-.TH LDAP_FIRST_ATTRIBUTE 3 "22 September 1998" "OpenLDAP LDVERSION"
+.TH LDAP_FIRST_ATTRIBUTE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP$
+.\" Copyright 1998-2009 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.SH NAME
ldap_first_attribute, ldap_next_attribute \- step through LDAP entry attributes
+.SH LIBRARY
+OpenLDAP LDAP (libldap, -lldap)
.SH SYNOPSIS
.nf
.ft B
-#include <lber.h>
#include <ldap.h>
.LP
.ft B
-char *ldap_first_attribute(ld, entry, berptr)
-.ft
-LDAP *ld;
-LDAPMessage *entry;
-BerElement **berptr;
+char *ldap_first_attribute(
+ LDAP *ld, LDAPMessage *entry, BerElement **berptr )
.LP
.ft B
-char *ldap_next_attribute(ld, entry, ber)
-.ft
-LDAP *ld;
-LDAPMessage *entry;
-BerElement *ber;
+char *ldap_next_attribute(
+ LDAP *ld, LDAPMessage *entry, BerElement *ber )
.SH DESCRIPTION
The
.B ldap_first_attribute()
.BR ldap_first_entry (3)
or
.BR ldap_next_entry (3)
-and returns a pointer to a per-connection buffer
-containing the first attribute type in the entry. The return value
-should be treated as if it is a pointer to a static area (i.e.,
-.BR strdup (3)
-it if you want to save it).
+and returns a pointer to character string
+containing the first attribute description in the entry.
+.B ldap_next_attribute()
+returns the next attribute description in the entry.
.LP
It also returns, in \fIberptr\fP, a pointer to a BerElement it has
allocated to keep track of its current position. This pointer should
be passed to subsequent calls to
.B ldap_next_attribute()
-and is used used
-to effectively step through the entry's attributes. This pointer
-is freed by
-.B ldap_next_attribute()
-when there are no more attributes (that
-is, when
-.B ldap_next_attribute()
-returns NULL). Otherwise, the caller is
-responsible for freeing the BerElement pointed to by \fIberptr\fP when
-it is no longer needed by calling
+and is used
+to effectively step through the entry's attributes. The caller is
+solely responsible for freeing the BerElement pointed to by \fIberptr\fP
+when it is no longer needed by calling
.BR ber_free (3).
When calling
.BR ber_free (3)
.SH NOTES
The
.B ldap_first_attribute()
-routine mallocs memory that may need to
-be freed by the caller via
-.BR ber_free (3).
+and
+.B ldap_next_attribute()
+return dynamically allocated memory that must be freed by the caller via
+.BR ldap_memfree (3).
.SH SEE ALSO
-.BR ldap(3),
-.BR ldap_first_entry(3),
-.BR ldap_get_values(3),
-.BR ldap_error(3)
+.BR ldap (3),
+.BR ldap_first_entry (3),
+.BR ldap_get_values (3),
+.BR ldap_error (3)
.SH ACKNOWLEDGEMENTS
-.B OpenLDAP
-is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
-.B OpenLDAP
-is derived from University of Michigan LDAP 3.3 Release.
+.so ../Project