char *type;
struct berval vals[2];
#ifdef SLAP_NVALUES
- struct berval nvals[2];
+ struct berval nvals[2], *nvalsp;
#endif
AttributeDescription *ad;
const char *text;
e->e_id = NOID;
/* dn + attributes */
+ vals[1].bv_len = 0;
vals[1].bv_val = NULL;
next = s;
}
#ifdef SLAP_NVALUES
- if( ad->ad_type->sat_syntax->ssyn_normalize ) {
- rc = ad->ad_type->sat_syntax->ssyn_normalize(
+ nvalsp = NULL;
+ nvals[0].bv_val = NULL;
+
+ if( ad->ad_type->sat_equality &&
+ ad->ad_type->sat_equality->smr_normalize )
+ {
+ 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[0], &nvals[0] );
if( rc ) {
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, DETAIL1,
- "str2entry: NULL (ssyn_normalize %d)\n" , rc, 0, 0 );
+ "str2entry: NULL (smr_normalize %d)\n" , rc, 0, 0 );
#else
Debug( LDAP_DEBUG_ANY,
- "<= str2entry NULL (ssyn_normalize %d)\n", rc, 0, 0 );
+ "<= str2entry NULL (smr_normalize %d)\n", rc, 0, 0 );
+#endif
entry_free( e );
free( vals[0].bv_val );
free( type );
return NULL;
}
-#endif
- } else {
- nvals[0].bv_len = 0;
- nvals[0].bv_val = NULL;
- }
+ nvals[1].bv_len = 0;
+ nvals[1].bv_val = NULL;
- nvals[1].bv_len = 0;
- nvals[1].bv_val = NULL;
+ nvalsp = &nvals[0];
+ }
#endif
- rc = attr_merge( e, ad, vals
#ifdef SLAP_NVALUES
- , nvals
+ rc = attr_merge( e, ad, vals, nvalsp );
+#else
+ rc = attr_merge( e, ad, vals );
#endif
- );
if( rc != 0 ) {
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, DETAIL1,
*/
int entry_decode(struct berval *bv, Entry **e)
{
- int i, j;
+ int i, j, count;
int rc;
Attribute *a;
Entry *x;
bptr = (BerVarray)(a+1);
a->a_vals = bptr;
a->a_flags = 0;
- j = entry_getlen(&ptr);
+ count = j = entry_getlen(&ptr);
while (j) {
i = entry_getlen(&ptr);
bptr->bv_val = NULL;
bptr->bv_len = 0;
bptr++;
+
+#ifdef SLAP_NVALUES
+ if( count && ad->ad_type->sat_equality &&
+ ad->ad_type->sat_equality->smr_normalize )
+ {
+ a->a_nvals = ch_malloc((count+1)*sizeof(struct berval));
+
+ for(j=0; j<count; j++) {
+ rc = ad->ad_type->sat_equality->smr_normalize(
+ SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
+ ad->ad_type->sat_syntax,
+ ad->ad_type->sat_equality,
+ &a->a_vals[j], &a->a_nvals[j] );
+
+ if( rc ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( OPERATION, DETAIL1,
+ "entry_decode: NULL (smr_normalize %d)\n",
+ rc, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_ANY,
+ "<= entry_decode NULL (smr_normalize %d)\n",
+ rc, 0, 0 );
+#endif
+
+ return rc;
+ }
+ }
+ a->a_nvals[j].bv_val = NULL;
+ a->a_nvals[j].bv_len = 0;
+ }
+#endif
+
}
- if (a)
- a->a_next = NULL;
+
+ if (a) a->a_next = NULL;
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, DETAIL1, "entry_decode: %s\n", x->e_dn, 0, 0 );
#else