]> git.sur5r.net Git - openldap/commitdiff
slapadd no-schema-check support (not yet documented)
authorKurt Zeilenga <kurt@openldap.org>
Mon, 13 Feb 2006 21:37:39 +0000 (21:37 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 13 Feb 2006 21:37:39 +0000 (21:37 +0000)
servers/slapd/back-ldbm/compare.c
servers/slapd/slap.h
servers/slapd/slapadd.c
servers/slapd/slapcommon.c

index 7b80428047870103e5f2289b5fdba3b23a54b660..ab6022809edb02bc53923fb0148ca8dfdd4721d3 100644 (file)
@@ -46,10 +46,7 @@ ldbm_back_compare(
        e = dn2entry_r( op->o_bd, &op->o_req_ndn, &matched );
        if ( e == NULL ) {
                if ( matched != NULL ) {
-                       struct berval   bv;
-
-                       ber_str2bv_x( matched, 0, 1, &bv, op->o_tmpmemctx );
-                       rs->sr_matched = bv.bv_val;
+                       rs->sr_matched = ch_strdup( matched->e_dn );
                        rs->sr_ref = is_entry_referral( matched )
                                ? get_entry_referrals( op, matched )
                                : NULL;
index bbd56960b9f0cb3b06f756acc9a8afb54c75b68b..0037828491372976d57505a509f9be5afb21992f 100644 (file)
@@ -1538,6 +1538,7 @@ LDAP_SLAPD_V (int) slapMode;
 #define        SLAP_TOOL_READMAIN      0x0200
 #define        SLAP_TOOL_READONLY      0x0400
 #define        SLAP_TOOL_QUICK         0x0800
+#define SLAP_TOOL_NO_SCHEMA_CHECK      0x1000
 
 #define SB_TLS_DEFAULT         (-1)
 #define SB_TLS_OFF             0
index 588fa2a282c6e1078f4bac4d6853c6a1a07ae95c..11cf55f371a93a12a7b458070c4d9120079a2421 100644 (file)
@@ -193,16 +193,18 @@ slapadd( int argc, char **argv )
                        /* check schema */
                        op->o_bd = be;
 
-                       rc = entry_schema_check( op, e, NULL, manage,
-                               &text, textbuf, textlen );
+                       if ( (slapMode & SLAP_TOOL_NO_SCHEMA_CHECK) == 0) {
+                               rc = entry_schema_check( op, e, NULL, manage,
+                                       &text, textbuf, textlen );
 
-                       if( rc != LDAP_SUCCESS ) {
-                               fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
-                                       progname, e->e_dn, lineno, rc, text );
-                               rc = EXIT_FAILURE;
-                               entry_free( e );
-                               if( continuemode ) continue;
-                               break;
+                               if( rc != LDAP_SUCCESS ) {
+                                       fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
+                                               progname, e->e_dn, lineno, rc, text );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       if( continuemode ) continue;
+                                       break;
+                               }
                        }
                }
 
index dbe0ed2a3a8d89a1e68f75cab2f99552df61333e..581e06635284a9f291edc8e963c79def96876010 100644 (file)
@@ -63,7 +63,7 @@ usage( int tool, const char *progname )
 
        case SLAPADD:
                options = " [-c]\n\t[-g] [-n databasenumber | -b suffix]\n"
-                       "\t[-l ldiffile] [-q] [-u] [-w]\n";
+                       "\t[-l ldiffile] [-q] [-u] [-s] [-w]\n";
                break;
 
        case SLAPAUTH:
@@ -209,7 +209,7 @@ slap_tool_init(
 
        switch( tool ) {
        case SLAPADD:
-               options = "b:cd:f:F:gl:n:qtuvw";
+               options = "b:cd:f:F:gl:n:qstuvw";
                break;
 
        case SLAPCAT:
@@ -376,7 +376,10 @@ slap_tool_init(
                        break;
 
                case 's':       /* dump subtree */
-                       subtree = strdup( optarg );
+                       if ( tool == SLAPADD )
+                               mode |= SLAP_TOOL_NO_SCHEMA_CHECK;
+                       else if ( tool == SLAPCAT )
+                               subtree = strdup( optarg );
                        break;
 
                case 't':       /* turn on truncate */