]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapadd.c
declare oc_bvfind_undef()
[openldap] / servers / slapd / slapadd.c
index 677e7b1fd41478f15cce9706e0404627dc27487a..2d648278161dd4b3fb3950d685b9ee61366a8347 100644 (file)
@@ -81,9 +81,6 @@ slapadd( int argc, char **argv )
        int i;
        struct berval mc;
        struct sync_cookie sc;
-#ifdef NEW_LOGGING
-       lutil_log_initialize(argc, argv );
-#endif
        slap_tool_init( progname, SLAPADD, argc, argv );
 
        LDAP_SLIST_INIT( &consumer_subentry );
@@ -94,7 +91,12 @@ slapadd( int argc, char **argv )
        {
                fprintf( stderr, "%s: database doesn't support necessary operations.\n",
                        progname );
-               exit( EXIT_FAILURE );
+               if ( dryrun ) {
+                       fprintf( stderr, "\t(dry) continuing...\n" );
+
+               } else {
+                       exit( EXIT_FAILURE );
+               }
        }
 
        lmax = 0;
@@ -232,11 +234,9 @@ slapadd( int argc, char **argv )
                        timestamp.bv_val = timebuf;
                        timestamp.bv_len = strlen(timebuf);
 
-                       if ( be->be_rootndn.bv_len == 0 ) {
-                               name.bv_val = SLAPD_ANONYMOUS;
-                               name.bv_len = sizeof(SLAPD_ANONYMOUS) - 1;
-                               nname.bv_val = SLAPD_ANONYMOUS;
-                               nname.bv_len = sizeof(SLAPD_ANONYMOUS) - 1;
+                       if ( BER_BVISEMPTY( &be->be_rootndn ) ) {
+                               BER_BVSTR( &name, SLAPD_ANONYMOUS );
+                               nname = name;
                        } else {
                                name = be->be_rootdn;
                                nname = be->be_rootndn;
@@ -556,10 +556,10 @@ done:;
 
                for ( i = 0; replica_id_list[i] > -1 ; i++ ) {
                        slap_syncrepl_bv.bv_len = snprintf( slap_syncrepl_bv.bv_val,
-                                                                       slap_syncrepl_bvc.bv_len,
+                                                                       slap_syncrepl_bvc.bv_len+1,
                                                                        "syncrepl%d", replica_id_list[i] );
                        slap_syncrepl_cn_bv.bv_len = snprintf( slap_syncrepl_cn_bv.bv_val,
-                                                                               slap_syncrepl_cn_bvc.bv_len,
+                                                                               slap_syncrepl_cn_bvc.bv_len+1,
                                                                                "cn=syncrepl%d", replica_id_list[i] );
                        build_new_dn( &ctxcsn_ndn, &be->be_nsuffix[0],
                                                  (struct berval *)&slap_syncrepl_cn_bv, NULL );
@@ -725,12 +725,18 @@ done:;
 
        ch_free( buf );
 
-       if( be->be_entry_close( be )) rc = EXIT_FAILURE;
+       if ( !dryrun ) {
+               if( be->be_entry_close( be ) ) {
+                       rc = EXIT_FAILURE;
+               }
 
-       if( be->be_sync ) {
-               be->be_sync( be );
+               if( be->be_sync ) {
+                       be->be_sync( be );
+               }
        }
 
        slap_tool_destroy();
+
        return rc;
 }
+