[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Sorting stuff from OpenLdap (i hope my first post isnt OT)



Please direct OpenLDAP Software use questions, including use of
OpenLDAP provided LDAP libraries, to the OpenLDAP-Software.
This list is reserved for discussions regarding the development
of OpenLDAP Software.
        http://www.openldap.org/lists/#charter

Thanks, Kurt

At 01:58 AM 2002-09-20, Kai-Uwe Schmidt wrote:
>Hi world,
>
>i am writing an application which deals with LDAP-data. My problem is to get
>a sorted list of entries. I need the dn and the cn values and get them
>sorted by the cn. If i try like discribed above i get a segfault in
>ldap_sort_strcasecmp(). Did i made a mistake in my code, or is the truely a
>bug ?
>
>I am using the openldap version 2.0.11 from the SuSE Linux eMail Server.
>
>regards
>Kai-Uwe
>
>
>
>
>#include <stdio.h>
>#include <stdlib.h>
>#include <string.h>
>#include <ldap.h>
>
>
>int main(void) {
>        LDAP        *ld;
>        LDAPMessage *searchResult, *entry;
>        int rc=0,anzEntries,i=0;
>        char **result=NULL;
>        char *attribute=NULL;
>        BerElement *ber;
>        char *attrs[]={"dn","cn",NULL};
>//      char *attrs[]={NULL};
>
>        ld = ldap_init( "mailintern.sawag.com", 389 );
>        rc = ldap_simple_bind_s( ld, "uid=kus,dc=dev,dc=sawag,dc=com",
>"system" );
>        rc = ldap_search_s( ld, "dc=dev,dc=sawag,dc=com",
>LDAP_SCOPE_SUBTREE, "(objectclass=posixAccount)", attrs, 0, &searchResult );
>
>        rc=ldap_sort_entries( ld, &searchResult, "cn", (int
>(*)())ldap_sort_strcasecmp );
>
>        anzEntries = ldap_count_entries(ld,searchResult);
>        result = (char **)malloc((anzEntries+1)*sizeof(char *));
>        memset(result,0,(anzEntries+1)*sizeof(char *));
>
>        for (   entry   =   ldap_first_entry( ld, searchResult),i=0;
>                entry   !=  NULL;
>                entry   =   ldap_next_entry( ld, entry ),i++ )
>        {
>                attribute = ldap_first_attribute( ld, entry, &ber );
>                result=ldap_get_values( ld, entry, attribute );
>printf("Result: %s: %s\n",ldap_get_dn( ld, entry), result[0]);
>
>        }
>        ldap_msgfree( searchResult );
>        ldap_unbind_s( ld );
>
>        return 0;
>}