X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapcommon.c;h=12856633cd015e578e07abb51e80792679107d67;hb=384f23f59d4f586c82d2626dde5ebf72518e73be;hp=5df004555741f1384aaa98b8d3846aa1ff0f9905;hpb=8931d68e3704c8112fec1fbb1281b6a0bf960c49;p=openldap diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index 5df0045557..12856633cd 100644 --- a/servers/slapd/slapcommon.c +++ b/servers/slapd/slapcommon.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2007 The OpenLDAP Foundation. + * Copyright 1998-2009 The OpenLDAP Foundation. * Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 2003 IBM Corporation. * All rights reserved. @@ -88,7 +88,7 @@ usage( int tool, const char *progname ) break; case SLAPINDEX: - options = " [-c]\n\t[-g] [-n databasenumber | -b suffix] [attr ...] [-q]\n"; + options = " [-c]\n\t[-g] [-n databasenumber | -b suffix] [attr ...] [-q] [-t]\n"; break; case SLAPTEST: @@ -241,7 +241,7 @@ slap_tool_init( switch( tool ) { case SLAPADD: - options = "b:cd:f:F:gj:l:n:o:qstuvw"; + options = "b:cd:f:F:gj:l:n:o:qsS:uvw"; break; case SLAPCAT: @@ -265,7 +265,7 @@ slap_tool_init( break; case SLAPINDEX: - options = "b:cd:f:F:gn:o:qv"; + options = "b:cd:f:F:gn:o:qtv"; mode |= SLAP_TOOL_READMAIN; break; @@ -384,6 +384,14 @@ slap_tool_init( realm = optarg; break; + case 'S': + if ( lutil_atou( &csnsid, optarg ) + || csnsid > SLAP_SYNC_SID_MAX ) + { + usage( tool, progname ); + } + break; + case 's': /* dump subtree */ if ( tool == SLAPADD ) mode |= SLAP_TOOL_NO_SCHEMA_CHECK; @@ -556,7 +564,7 @@ slap_tool_init( } if ( use_glue ) { - rc = glue_sub_attach(); + rc = glue_sub_attach( 0 ); if ( rc != 0 ) { fprintf( stderr, @@ -732,13 +740,16 @@ startup:; } } -void slap_tool_destroy( void ) +int slap_tool_destroy( void ) { + int rc = 0; if ( !dryrun ) { if ( need_shutdown ) { - slap_shutdown( be ); + if ( slap_shutdown( be )) + rc = EXIT_FAILURE; } - slap_destroy(); + if ( slap_destroy()) + rc = EXIT_FAILURE; } #ifdef SLAPD_MODULES if ( slapMode == SLAP_SERVER_MODE ) { @@ -764,4 +775,5 @@ void slap_tool_destroy( void ) if ( ldiffp && ldiffp != &dummy ) { ldif_close( ldiffp ); } + return rc; }