]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/entry.c
ITS#4310 seems to affect also back-ldbm
[openldap] / servers / slapd / entry.c
index 9441de24e6317c7b18a2425ceab42870e89bac20..c389f6b0a21f3151679e738a66694ebc2e078585 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * 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;
                                }
@@ -268,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,
@@ -303,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;
@@ -726,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;
                        }