mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-18 11:05:48 +08:00
Added a new function: build_new_dn(), which builds new dn for entries
being renamed through modrdn/moddn. This in preparation to add support for MODDN v3.
This commit is contained in:
parent
3b367ac961
commit
dccfdb97e9
@ -345,7 +345,8 @@ dn_upcase( char *dn )
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* get_next_substring(), rdn_attr_type(), and rdn_attr_value()
|
* get_next_substring(), rdn_attr_type(), rdn_attr_value(), and
|
||||||
|
* build_new_dn().
|
||||||
*
|
*
|
||||||
* Copyright 1999, Juan C. Gomez, All rights reserved.
|
* Copyright 1999, Juan C. Gomez, All rights reserved.
|
||||||
* This software is not subject to any license of Silicon Graphics
|
* This software is not subject to any license of Silicon Graphics
|
||||||
@ -440,3 +441,51 @@ rdn_attr_value( char * rdn )
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
}/* char * rdn_attr_value() */
|
}/* char * rdn_attr_value() */
|
||||||
|
|
||||||
|
|
||||||
|
/* build_new_dn:
|
||||||
|
*
|
||||||
|
* Used by ldbm/bdb2_back_modrdn to create the new dn of entries being
|
||||||
|
* renamed.
|
||||||
|
*
|
||||||
|
* new_dn = parent (p_dn) + separator(s) + rdn (newrdn) + null.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
build_new_dn( char ** new_dn, char *e_dn, char * p_dn, char * newrdn )
|
||||||
|
{
|
||||||
|
|
||||||
|
*new_dn = (char *) ch_malloc( strlen( p_dn ) + strlen( newrdn ) + 3 );
|
||||||
|
|
||||||
|
if ( dn_type( e_dn ) == DN_X500 ) {
|
||||||
|
|
||||||
|
strcpy( *new_dn, newrdn );
|
||||||
|
strcat( *new_dn, ", " );
|
||||||
|
strcat( *new_dn, p_dn );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
char *s;
|
||||||
|
char sep[2];
|
||||||
|
|
||||||
|
strcpy( *new_dn, newrdn );
|
||||||
|
s = strchr( newrdn, '\0' );
|
||||||
|
s--;
|
||||||
|
|
||||||
|
if ( (*s != '.') && (*s != '@') ) {
|
||||||
|
|
||||||
|
if ( (s = strpbrk( e_dn, ".@" )) != NULL ) {
|
||||||
|
|
||||||
|
sep[0] = *s;
|
||||||
|
sep[1] = '\0';
|
||||||
|
strcat( *new_dn, sep );
|
||||||
|
|
||||||
|
}/* if ( (s = strpbrk( dn, ".@" )) != NULL ) */
|
||||||
|
|
||||||
|
}/* if ( *s != '.' && *s != '@' ) */
|
||||||
|
|
||||||
|
strcat( *new_dn, p_dn );
|
||||||
|
|
||||||
|
}/* if ( dn_type( e_dn ) == DN_X500 ) {}else */
|
||||||
|
|
||||||
|
}/* void build_new_dn() */
|
||||||
|
@ -139,7 +139,8 @@ int dn_type LDAP_P(( char *dn ));
|
|||||||
char * dn_upcase LDAP_P(( char *dn ));
|
char * dn_upcase LDAP_P(( char *dn ));
|
||||||
char * rdn_attr_value LDAP_P(( char * rdn ));
|
char * rdn_attr_value LDAP_P(( char * rdn ));
|
||||||
char * rdn_attr_type LDAP_P(( char * rdn ));
|
char * rdn_attr_type LDAP_P(( char * rdn ));
|
||||||
|
void build_new_dn LDAP_P(( char ** new_dn, char *e_dn, char * p_dn,
|
||||||
|
char * newrdn ));
|
||||||
/*
|
/*
|
||||||
* entry.c
|
* entry.c
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user