mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-29 19:19:35 -05:00
Add basic infrastructure for pretty routines
A pretty routine may rewrite the representation of a value but must not alter the value itself.
This commit is contained in:
parent
3f53087f57
commit
f26e1b390e
3 changed files with 41 additions and 11 deletions
|
|
@ -176,10 +176,23 @@ str2entry( char *s )
|
|||
}
|
||||
|
||||
if( slapMode & SLAP_TOOL_MODE ) {
|
||||
struct berval *pval;
|
||||
slap_syntax_validate_func *validate =
|
||||
ad->ad_type->sat_syntax->ssyn_validate;
|
||||
slap_syntax_transform_func *pretty =
|
||||
ad->ad_type->sat_syntax->ssyn_pretty;
|
||||
|
||||
if( !validate ) {
|
||||
if( pretty ) {
|
||||
rc = pretty( ad->ad_type->sat_syntax,
|
||||
&value, &pval );
|
||||
|
||||
} else if( validate ) {
|
||||
/*
|
||||
* validate value per syntax
|
||||
*/
|
||||
rc = validate( ad->ad_type->sat_syntax, &value );
|
||||
|
||||
} else {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
|
||||
"str2entry: no validator for syntax %s\n",
|
||||
|
|
@ -195,11 +208,6 @@ str2entry( char *s )
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* validate value per syntax
|
||||
*/
|
||||
rc = validate( ad->ad_type->sat_syntax, &value );
|
||||
|
||||
if( rc != 0 ) {
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
|
||||
|
|
@ -215,6 +223,12 @@ str2entry( char *s )
|
|||
free( type );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( pretty ) {
|
||||
free( value.bv_val );
|
||||
value = *pval;
|
||||
free( pval );
|
||||
}
|
||||
}
|
||||
|
||||
rc = attr_merge( e, ad, vals );
|
||||
|
|
|
|||
|
|
@ -490,8 +490,10 @@ int slap_modlist2mods(
|
|||
ber_len_t nvals;
|
||||
slap_syntax_validate_func *validate =
|
||||
ad->ad_type->sat_syntax->ssyn_validate;
|
||||
|
||||
if( !validate ) {
|
||||
slap_syntax_transform_func *pretty =
|
||||
ad->ad_type->sat_syntax->ssyn_pretty;
|
||||
|
||||
if( !pretty && !validate ) {
|
||||
slap_mods_free( mod );
|
||||
*text = "no validator for syntax";
|
||||
snprintf( textbuf, textlen,
|
||||
|
|
@ -504,9 +506,17 @@ int slap_modlist2mods(
|
|||
|
||||
/*
|
||||
* check that each value is valid per syntax
|
||||
* and pretty if appropriate
|
||||
*/
|
||||
for( nvals = 0; ml->ml_bvalues[nvals]; nvals++ ) {
|
||||
rc = validate( ad->ad_type->sat_syntax, ml->ml_bvalues[nvals] );
|
||||
struct berval *pval;
|
||||
if( pretty ) {
|
||||
rc = pretty( ad->ad_type->sat_syntax,
|
||||
ml->ml_bvalues[nvals], &pval );
|
||||
} else {
|
||||
rc = validate( ad->ad_type->sat_syntax,
|
||||
ml->ml_bvalues[nvals] );
|
||||
}
|
||||
|
||||
if( rc != 0 ) {
|
||||
slap_mods_free( mod );
|
||||
|
|
@ -516,6 +526,12 @@ int slap_modlist2mods(
|
|||
*text = textbuf;
|
||||
return LDAP_INVALID_SYNTAX;
|
||||
}
|
||||
|
||||
if( pretty ) {
|
||||
ber_memfree( ml->ml_bvalues[nvals]->bv_val );
|
||||
*ml->ml_bvalues[nvals] = *pval;
|
||||
free( pval );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -436,7 +436,7 @@ int
|
|||
dnPretty(
|
||||
Syntax *syntax,
|
||||
struct berval *val,
|
||||
struct berval **normalized)
|
||||
struct berval **pretty)
|
||||
{
|
||||
struct berval *out = NULL;
|
||||
|
||||
|
|
@ -479,7 +479,7 @@ dnPretty(
|
|||
out = ber_bvdup( val );
|
||||
}
|
||||
|
||||
*normalized = out;
|
||||
*pretty = out;
|
||||
|
||||
return( LDAP_SUCCESS );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue