/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2008 The OpenLDAP Foundation.
+ * Copyright 1998-2010 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
typedef int (MainFunc) LDAP_P(( int argc, char *argv[] ));
extern MainFunc slapadd, slapcat, slapdn, slapindex, slappasswd,
- slaptest, slapauth, slapacl;
+ slaptest, slapauth, slapacl, slapschema, slapmodify;
static struct {
char *name;
{"slapcat", slapcat},
{"slapdn", slapdn},
{"slapindex", slapindex},
+ {"slapmodify", slapmodify},
{"slappasswd", slappasswd},
+ {"slapschema", slapschema},
{"slaptest", slaptest},
{"slapauth", slapauth},
{"slapacl", slapacl},
OPENLDAP_PACKAGE " " OPENLDAP_VERSION " Standalone LDAP Server (slapd)";
#endif
+extern OverlayInit slap_oinfo[];
+extern BackendInfo slap_binfo[];
+
#define CHECK_NONE 0x00
#define CHECK_CONFIG 0x01
#define CHECK_LOGLEVEL 0x02
ldap_charray_free( levels );
} else {
- if ( lutil_atoix( &level, arg, 0 ) != 0 ) {
+ int rc;
+
+ if ( arg[0] == '-' ) {
+ rc = lutil_atoix( &level, arg, 0 );
+ } else {
+ unsigned ulevel;
+
+ rc = lutil_atoux( &ulevel, arg, 0 );
+ level = (int)ulevel;
+ }
+
+ if ( rc ) {
fprintf( stderr,
"unrecognized log level "
"\"%s\"\n", arg );
fprintf( stderr,
"\t-4\t\tIPv4 only\n"
"\t-6\t\tIPv6 only\n"
- "\t-T {acl|add|auth|cat|dn|index|passwd|test}\n"
+ "\t-T {acl|add|auth|cat|dn|index|modify|passwd|test}\n"
"\t\t\tRun in Tool mode\n"
"\t-c cookie\tSync cookie of consumer\n"
"\t-d level\tDebug level" "\n"
#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
"\t-u user\t\tUser (id or name) to run as\n"
#endif
- "\t-V\t\tprint version info (-VV only)\n"
+ "\t-V\t\tprint version info (-VV exit afterwards, -VVV print\n"
+ "\t\t\tinfo about static overlays and backends)\n"
);
}
}
}
+ if ( optind != argc )
+ goto unhandled_option;
+
ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
ldif_debug = slap_debug;
if ( version ) {
fprintf( stderr, "%s\n", Versionstr );
+ if ( version > 2 ) {
+ if ( slap_oinfo[0].ov_type ) {
+ fprintf( stderr, "Included static overlays:\n");
+ for ( i= 0 ; slap_oinfo[i].ov_type; i++ ) {
+ fprintf( stderr, " %s\n", slap_oinfo[i].ov_type );
+ }
+ }
+ if ( slap_binfo[0].bi_type ) {
+ fprintf( stderr, "Included static backends:\n");
+ for ( i= 0 ; slap_binfo[i].bi_type; i++ ) {
+ fprintf( stderr, " %s\n", slap_binfo[i].bi_type );
+ }
+ }
+ }
+
if ( version > 1 ) goto stop;
}
Debug( LDAP_DEBUG_ANY, "%s", Versionstr, 0, 0 );
global_host = ldap_pvt_get_fqdn( NULL );
+ ber_str2bv( global_host, 0, 0, &global_host_bv );
if( check == CHECK_NONE && slapd_daemon_init( urls ) != 0 ) {
rc = 1;
}
}
- if ( glue_sub_attach( ) != 0 ) {
+ if ( glue_sub_attach( 0 ) != 0 ) {
Debug( LDAP_DEBUG_ANY,
"subordinate config error\n",
0, 0, 0 );
ch_free( configdir );
if ( urls )
ch_free( urls );
+ if ( global_host )
+ ch_free( global_host );
/* kludge, get symbols referenced */
tavl_free( NULL, NULL );
int save_errno = errno;
#ifdef WNOHANG
- errno = 0;
+ do
+ errno = 0;
#ifdef HAVE_WAITPID
- while ( waitpid( (pid_t)-1, NULL, WNOHANG ) > 0 || errno == EINTR )
- ; /* NULL */
+ while ( waitpid( (pid_t)-1, NULL, WNOHANG ) > 0 || errno == EINTR );
#else
- while ( wait3( NULL, WNOHANG, NULL ) > 0 || errno == EINTR )
- ; /* NULL */
+ while ( wait3( NULL, WNOHANG, NULL ) > 0 || errno == EINTR );
#endif
#else
(void) wait( NULL );
}
#endif /* LDAP_SIGCHLD */
-