]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldap/config.c
fix rewrite iteration
[openldap] / servers / slapd / back-ldap / config.c
index c06a7c5d8937fb05501330adb380fc2e55e0b246..8f041a117e327b2db716d12c01a5315877f2898b 100644 (file)
@@ -318,6 +318,33 @@ mapping_dup ( void *c1, void *c2 )
        return( ( strcasecmp(map1->src.bv_val, map2->src.bv_val) == 0 ) ? -1 : 0 );
 }
 
+void
+ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping **m )
+{
+       struct ldapmapping *mapping;
+
+       assert( m );
+
+       *m = NULL;
+       
+       mapping = (struct ldapmapping *)ch_calloc( 2, 
+                       sizeof( struct ldapmapping ) );
+       if ( mapping == NULL ) {
+               return;
+       }
+
+       ber_str2bv( "objectclass", sizeof("objectclass")-1, 1, &mapping->src);
+       ber_dupbv( &mapping->dst, &mapping->src );
+       mapping[1].src = mapping->src;
+       mapping[1].dst = mapping->dst;
+
+       avl_insert( &lm->map, (caddr_t)mapping, 
+                       mapping_cmp, mapping_dup );
+       avl_insert( &lm->remap, (caddr_t)&mapping[1], 
+                       mapping_cmp, mapping_dup );
+       *m = mapping;
+}
+
 void
 ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *bv,
        int remap )
@@ -438,19 +465,18 @@ ldap_back_map_filter(
 char **
 ldap_back_map_attrs(
                struct ldapmap *at_map,
-               AttributeName *a,
+               AttributeName *an,
                int remap
 )
 {
        int i;
        char **na;
-       AttributeName *an;
        struct berval mapped;
 
-       if (a == NULL)
+       if (an == NULL)
                return(NULL);
 
-       for (i = 0, an=a; an; an=an->an_next, i++) {
+       for (i = 0; an[i].an_name.bv_val; i++) {
                /*  */
        }
 
@@ -458,8 +484,8 @@ ldap_back_map_attrs(
        if (na == NULL)
                return(NULL);
 
-       for (i = 0, an=a; an; an=an->an_next) {
-               ldap_back_map(at_map, &an->an_name, &mapped, remap);
+       for (i = 0; an[i].an_name.bv_val; i++) {
+               ldap_back_map(at_map, &an[i].an_name, &mapped, remap);
                if (mapped.bv_val != NULL) {
                        na[i] = mapped.bv_val;
                        i++;