Lines Matching defs:rdn

344 void slapi_rdn_init( Slapi_RDN *rdn )
346 rdn->flag = 0;
347 BER_BVZERO( &rdn->bv );
348 rdn->rdn = NULL;
353 Slapi_RDN *rdn;
355 rdn = (Slapi_RDN *)slapi_ch_malloc( sizeof(*rdn ));
356 slapi_rdn_init( rdn );
358 return rdn;
363 Slapi_RDN *rdn;
365 rdn = slapi_rdn_new();
366 slapi_rdn_init_dn( rdn, dn );
367 return rdn;
380 void slapi_rdn_init_dn( Slapi_RDN *rdn, const char *dn )
382 slapi_rdn_init( rdn );
383 slapi_rdn_set_dn( rdn, dn );
386 void slapi_rdn_init_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn )
388 slapi_rdn_init( rdn );
389 slapi_rdn_set_sdn( rdn, sdn );
392 void slapi_rdn_init_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn )
394 slapi_rdn_init( rdn );
395 slapi_rdn_set_rdn( rdn, fromrdn );
398 void slapi_rdn_set_dn( Slapi_RDN *rdn, const char *dn )
402 slapi_rdn_done( rdn );
411 dnExtractRdn( &bv, &rdn->bv, NULL );
412 rdn->flag |= FLAG_DN;
415 void slapi_rdn_set_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn )
417 slapi_rdn_set_dn( rdn, slapi_sdn_get_dn( sdn ) );
420 void slapi_rdn_set_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn )
422 slapi_rdn_set_dn( rdn, fromrdn->bv.bv_val );
425 void slapi_rdn_free( Slapi_RDN **rdn )
427 slapi_rdn_done( *rdn );
428 slapi_ch_free( (void **)rdn );
431 void slapi_rdn_done( Slapi_RDN *rdn )
433 if ( rdn->rdn != NULL ) {
434 ldap_rdnfree( rdn->rdn );
435 rdn->rdn = NULL;
437 slapi_ch_free_string( &rdn->bv.bv_val );
438 slapi_rdn_init( rdn );
441 const char *slapi_rdn_get_rdn( const Slapi_RDN *rdn )
443 return rdn->bv.bv_val;
446 static int slapi_int_rdn_explode( Slapi_RDN *rdn )
450 if ( rdn->rdn != NULL ) {
454 return ldap_bv2rdn( &rdn->bv, &rdn->rdn, &next, LDAP_DN_FORMAT_LDAP );
457 static int slapi_int_rdn_implode( Slapi_RDN *rdn )
462 if ( rdn->rdn == NULL ) {
466 rc = ldap_rdn2bv( rdn->rdn, &bv, LDAP_DN_FORMAT_LDAPV3 | LDAP_DN_PRETTY );
471 slapi_ch_free_string( &rdn->bv.bv_val );
472 rdn->bv = bv;
477 int slapi_rdn_get_num_components( Slapi_RDN *rdn )
481 if ( slapi_int_rdn_explode( rdn ) != LDAP_SUCCESS )
484 for ( i = 0; rdn->rdn[i] != NULL; i++ )
490 int slapi_rdn_get_first( Slapi_RDN *rdn, char **type, char **value )
492 return slapi_rdn_get_next( rdn, 0, type, value );
495 int slapi_rdn_get_next( Slapi_RDN *rdn, int index, char **type, char **value )
497 slapi_int_rdn_explode( rdn );
499 if ( rdn->rdn == NULL || rdn->rdn[index] == NULL )
502 *type = rdn->rdn[index]->la_attr.bv_val;
503 *value = rdn->rdn[index]->la_value.bv_val;
508 int slapi_rdn_get_index( Slapi_RDN *rdn, const char *type, const char *value, size_t length )
515 slapi_int_rdn_explode( rdn );
524 for ( i = 0; rdn->rdn[i] != NULL; i++ ) {
529 &rdn->rdn[i]->la_value, (void *)&bv, &text ) != LDAP_SUCCESS )
539 int slapi_rdn_get_index_attr( Slapi_RDN *rdn, const char *type, char **value )
543 for ( i = 0; rdn->rdn[i] != NULL; i++ ) {
544 if ( slapi_attr_types_equivalent( rdn->rdn[i]->la_attr.bv_val, type ) ) {
545 *value = rdn->rdn[i]->la_value.bv_val;
553 int slapi_rdn_contains( Slapi_RDN *rdn, const char *type, const char *value, size_t length )
555 return ( slapi_rdn_get_index( rdn, type, value, length ) != -1 );
558 int slapi_rdn_contains_attr( Slapi_RDN *rdn, const char *type, char **value )
560 return ( slapi_rdn_get_index_attr( rdn, type, value ) != -1 );
579 int slapi_rdn_isempty( const Slapi_RDN *rdn )
581 return ( BER_BVISEMPTY( &rdn->bv ) );
584 int slapi_rdn_add( Slapi_RDN *rdn, const char *type, const char *value )
590 if ( !BER_BVISEMPTY( &rdn->bv ) ) {
591 len += 1 + rdn->bv.bv_len;
596 if ( BER_BVISEMPTY( &rdn->bv ) ) {
599 snprintf( s, len + 1, "%s=%s+%s", type, value, rdn->bv.bv_val );
602 slapi_rdn_done( rdn );
604 rdn->bv.bv_len = len;
605 rdn->bv.bv_val = s;
610 int slapi_rdn_remove_index( Slapi_RDN *rdn, int atindex )
614 count = slapi_rdn_get_num_components( rdn );
619 if ( rdn->rdn == NULL )
622 slapi_ch_free_string( &rdn->rdn[atindex]->la_attr.bv_val );
623 slapi_ch_free_string( &rdn->rdn[atindex]->la_value.bv_val );
626 rdn->rdn[i] = rdn->rdn[i + 1];
629 if ( slapi_int_rdn_implode( rdn ) != LDAP_SUCCESS )
635 int slapi_rdn_remove( Slapi_RDN *rdn, const char *type, const char *value, size_t length )
637 int index = slapi_rdn_get_index( rdn, type, value, length );
639 return slapi_rdn_remove_index( rdn, index );
642 int slapi_rdn_remove_attr( Slapi_RDN *rdn, const char *type )
645 int index = slapi_rdn_get_index_attr( rdn, type, &value );
647 return slapi_rdn_remove_index( rdn, index );
650 Slapi_DN *slapi_sdn_add_rdn( Slapi_DN *sdn, const Slapi_RDN *rdn )
654 build_new_dn( &bv, &sdn->dn, (struct berval *)&rdn->bv, NULL );
664 Slapi_RDN rdn;
666 slapi_rdn_init_sdn( &rdn, sdn );
668 slapi_sdn_add_rdn( sdn, &rdn );
669 slapi_rdn_done( &rdn );