--- servers/slapd/slapacl.c 2005/04/12 18:33:45 1.17 +++ servers/slapd/slapacl.c 2005/04/12 20:13:42 1.18 @@ -45,7 +45,6 @@ print_access( int rc; slap_mask_t mask; char accessmaskbuf[ACCESSMASK_MAXLEN]; - slap_access_t access = ACL_AUTH; rc = access_allowed_mask( op, e, desc, nval, ACL_AUTH, NULL, &mask ); @@ -71,9 +70,25 @@ slapacl( int argc, char **argv ) Entry e = { 0 }, *ep = &e; char *attr = NULL; int doclose = 0; + BackendDB *bd; slap_tool_init( progname, SLAPACL, argc, argv ); + if ( !dryrun ) { + int i = 0; + + LDAP_STAILQ_FOREACH( bd, &backendDB, be_next ) { + if ( bd != be && backend_startup( bd ) ) { + fprintf( stderr, "backend_startup(#%d%s%s) failed\n", + i, + bd->be_suffix ? ": " : "", + bd->be_suffix ? bd->be_suffix[0].bv_val : "" ); + rc = 1; + goto destroy; + } + } + } + argv = &argv[ optind ]; argc -= optind; @@ -339,6 +354,12 @@ destroy:; if ( doclose ) { be->be_entry_close( be ); } + + LDAP_STAILQ_FOREACH( bd, &backendDB, be_next ) { + if ( bd != be ) { + backend_shutdown( bd ); + } + } } slap_tool_destroy();