X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapcommon.c;h=acebb9a3f82e9a2e9ed7f9004d200cbb36644bf1;hb=18beda81a0e6b476afbef81e5fd676804142ca32;hp=906d7a60464e216618e729987b168d54f47b8382;hpb=6315ac9db697f5e59d07f2bf9d4b96bbbbca4ca2;p=openldap diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index 906d7a6046..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. @@ -133,16 +133,28 @@ parse_slapacl( void ) ber_str2bv( p, 0, 1, &sock_name ); } else if ( strncasecmp( optarg, "ssf", len ) == 0 ) { - ssf = atoi( p ); + if ( lutil_atou( &ssf, p ) ) { + Debug( LDAP_DEBUG_ANY, "unable to parse ssf=\"%s\".\n", p, 0, 0 ); + return -1; + } } else if ( strncasecmp( optarg, "transport_ssf", len ) == 0 ) { - transport_ssf = atoi( p ); + if ( lutil_atou( &transport_ssf, p ) ) { + Debug( LDAP_DEBUG_ANY, "unable to parse transport_ssf=\"%s\".\n", p, 0, 0 ); + return -1; + } } else if ( strncasecmp( optarg, "tls_ssf", len ) == 0 ) { - tls_ssf = atoi( p ); + if ( lutil_atou( &tls_ssf, p ) ) { + Debug( LDAP_DEBUG_ANY, "unable to parse tls_ssf=\"%s\".\n", p, 0, 0 ); + return -1; + } } else if ( strncasecmp( optarg, "sasl_ssf", len ) == 0 ) { - sasl_ssf = atoi( p ); + if ( lutil_atou( &sasl_ssf, p ) ) { + Debug( LDAP_DEBUG_ANY, "unable to parse sasl_ssf=\"%s\".\n", p, 0, 0 ); + return -1; + } } else if ( strncasecmp( optarg, "authzDN", len ) == 0 ) { ber_str2bv( p, 0, 1, &authzDN ); @@ -162,6 +174,8 @@ parse_slapacl( void ) * argc, argv command line arguments */ +static int need_shutdown; + void slap_tool_init( const char* progname, @@ -183,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 @@ -250,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 ( atoi( optarg ) != 0 ) + if ( level != 0 ) fputs( "must compile with LDAP_DEBUG for debugging\n", stderr ); #endif @@ -321,7 +317,9 @@ slap_tool_init( break; case 'n': /* which config file db to index */ - dbnum = atoi( optarg ); + if ( lutil_atoi( &dbnum, optarg ) ) { + usage( tool, progname ); + } break; case 'o': @@ -627,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 " @@ -646,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