X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fentry.c;h=c389f6b0a21f3151679e738a66694ebc2e078585;hb=a17df0e810578d593808c6afeb0cdea55a65633c;hp=a5b34ea99ab4d41384c3722c21c6ac68063eeb7e;hpb=0d06b7334e85428c59595d68b9c7b0423a4def56;p=openldap diff --git a/servers/slapd/entry.c b/servers/slapd/entry.c index a5b34ea99a..c389f6b0a2 100644 --- a/servers/slapd/entry.c +++ b/servers/slapd/entry.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2005 The OpenLDAP Foundation. + * Copyright 1998-2006 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -216,10 +216,10 @@ str2entry2( char *s, int checkvals ) goto fail; } - rc = slap_bv2undef_ad( type+i, &ad, &text ); + rc = slap_bv2undef_ad( type+i, &ad, &text, 0 ); if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= str2entry: str2undef_ad(%s): %s\n", + "<= str2entry: slap_str2undef_ad(%s): %s\n", type[i].bv_val, text, 0 ); goto fail; } @@ -230,6 +230,7 @@ str2entry2( char *s, int checkvals ) int j, k; atail->a_next = (Attribute *) ch_malloc( sizeof(Attribute) ); atail = atail->a_next; + atail->a_flags = 0; atail->a_desc = ad_prev; atail->a_vals = ch_malloc( (attr_cnt + 1) * sizeof(struct berval)); if( ad_prev->ad_type->sat_equality && @@ -267,15 +268,24 @@ str2entry2( char *s, int checkvals ) slap_syntax_transform_func *pretty = ad->ad_type->sat_syntax->ssyn_pretty; - if( pretty ) { + if ( pretty ) { +#ifdef SLAP_ORDERED_PRETTYNORM + rc = ordered_value_pretty( ad, + &vals[i], &pval, NULL ); +#else /* ! SLAP_ORDERED_PRETTYNORM */ rc = pretty( ad->ad_type->sat_syntax, &vals[i], &pval, NULL ); +#endif /* ! SLAP_ORDERED_PRETTYNORM */ - } else if( validate ) { + } else if ( validate ) { /* * validate value per syntax */ +#ifdef SLAP_ORDERED_PRETTYNORM + rc = ordered_value_validate( ad, &vals[i], LDAP_MOD_ADD ); +#else /* ! SLAP_ORDERED_PRETTYNORM */ rc = validate( ad->ad_type->sat_syntax, &vals[i] ); +#endif /* ! SLAP_ORDERED_PRETTYNORM */ } else { Debug( LDAP_DEBUG_ANY, @@ -302,16 +312,24 @@ str2entry2( char *s, int checkvals ) } } - if( ad->ad_type->sat_equality && + if ( ad->ad_type->sat_equality && ad->ad_type->sat_equality->smr_normalize ) { +#ifdef SLAP_ORDERED_PRETTYNORM + rc = ordered_value_normalize( + SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, + ad, + ad->ad_type->sat_equality, + &vals[i], &nvals[i], NULL ); +#else /* ! SLAP_ORDERED_PRETTYNORM */ rc = ad->ad_type->sat_equality->smr_normalize( SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX, ad->ad_type->sat_syntax, ad->ad_type->sat_equality, &vals[i], &nvals[i], NULL ); +#endif /* ! SLAP_ORDERED_PRETTYNORM */ - if( rc ) { + if ( rc ) { Debug( LDAP_DEBUG_ANY, "<= str2entry NULL (smr_normalize %d)\n", rc, 0, 0 ); goto fail; @@ -725,11 +743,11 @@ int entry_decode(struct berval *bv, Entry **e) if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_TRACE, "<= entry_decode: str2ad(%s): %s\n", ptr, text, 0 ); - rc = slap_bv2undef_ad( &bv, &ad, &text ); + rc = slap_bv2undef_ad( &bv, &ad, &text, 0 ); if( rc != LDAP_SUCCESS ) { Debug( LDAP_DEBUG_ANY, - "<= entry_decode: str2undef_ad(%s): %s\n", + "<= entry_decode: slap_str2undef_ad(%s): %s\n", ptr, text, 0 ); return rc; }