X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapcommon.c;h=acebb9a3f82e9a2e9ed7f9004d200cbb36644bf1;hb=18beda81a0e6b476afbef81e5fd676804142ca32;hp=5026e41de48cb3d38702655e240087ccf6882737;hpb=0fd295a32166e44c186a503ac43277c08a80c5fa;p=openldap diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index 5026e41de4..acebb9a3f8 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-2005 The OpenLDAP Foundation. + * Copyright 1998-2006 The OpenLDAP Foundation. * Portions Copyright 1998-2003 Kurt D. Zeilenga. * Portions Copyright 2003 IBM Corporation. * All rights reserved. @@ -174,6 +174,8 @@ parse_slapacl( void ) * argc, argv command line arguments */ +static int need_shutdown; + void slap_tool_init( const char* progname, @@ -195,7 +197,7 @@ slap_tool_init( #ifdef LDAP_DEBUG /* tools default to "none", so that at least LDAP_DEBUG_ANY * messages show up; use -d 0 to reset */ - ldap_debug = LDAP_DEBUG_NONE; + slap_debug = LDAP_DEBUG_NONE; #endif #ifdef CSRIMALLOC @@ -262,40 +264,22 @@ slap_tool_init( continuemode++; break; - case 'd': /* turn on debugging */ - { -#ifdef LDAP_DEBUG - int level; - - if ( optarg != NULL && optarg[ 0 ] != '-' && !isdigit( optarg[ 0 ] ) ) - { - if ( str2loglevel( optarg, &level ) ) { - fprintf( stderr, - "unrecognized log level " - "\"%s\"\n", optarg ); - exit( EXIT_FAILURE ); - } + case 'd': { /* turn on debugging */ + int level = 0; - } else { - char *next = NULL; - - level = strtol( optarg, &next, 0 ); - if ( next == NULL || next[ 0 ] != '\0' ) { - fprintf( stderr, - "unrecognized log level " - "\"%s\"\n", optarg ); - exit( EXIT_FAILURE ); - } + if ( parse_debug_level( optarg, &level ) ) { + usage( tool, progname ); } +#ifdef LDAP_DEBUG + if ( level == 0 ) { + /* allow to reset log level */ + slap_debug = 0; - if ( level ) { - ldap_debug |= level; } else { - /* allow to reset log level */ - ldap_debug = 0; + slap_debug |= level; } #else - if ( lutil_atoi( &level, optarg ) != 0 || level != 0 ) + if ( level != 0 ) fputs( "must compile with LDAP_DEBUG for debugging\n", stderr ); #endif @@ -641,6 +625,8 @@ startup:; /* slapdn doesn't specify a backend to startup */ if ( !dryrun && tool != SLAPDN && slap_startup( be ) ) { + need_shutdown = 1; + switch ( tool ) { case SLAPTEST: fprintf( stderr, "slap_startup failed " @@ -660,7 +646,9 @@ startup:; void slap_tool_destroy( void ) { if ( !dryrun ) { - slap_shutdown( be ); + if ( need_shutdown ) { + slap_shutdown( be ); + } slap_destroy(); } #ifdef SLAPD_MODULES