mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
better diagnostics
This commit is contained in:
parent
86e048aa33
commit
f3014a235d
@ -143,7 +143,9 @@ slapadd( int argc, char **argv )
|
||||
|
||||
/* nextline is the line number of the end of the current entry */
|
||||
for( lineno=1; ldif_read_record( ldiffp, &nextline, &buf, &lmax );
|
||||
lineno=nextline+1 ) {
|
||||
lineno=nextline+1 )
|
||||
{
|
||||
BackendDB *bd;
|
||||
Entry *e;
|
||||
|
||||
if ( lineno < jumpline )
|
||||
@ -173,7 +175,8 @@ slapadd( int argc, char **argv )
|
||||
|
||||
/* make sure the DN is not empty */
|
||||
if( BER_BVISEMPTY( &e->e_nname ) &&
|
||||
!BER_BVISEMPTY( be->be_nsuffix )) {
|
||||
!BER_BVISEMPTY( be->be_nsuffix ))
|
||||
{
|
||||
fprintf( stderr, "%s: empty dn=\"%s\" (line=%d)\n",
|
||||
progname, e->e_dn, lineno );
|
||||
rc = EXIT_FAILURE;
|
||||
@ -183,19 +186,32 @@ slapadd( int argc, char **argv )
|
||||
}
|
||||
|
||||
/* check backend */
|
||||
if( select_backend( &e->e_nname, nosubordinates )
|
||||
!= be )
|
||||
{
|
||||
bd = select_backend( &e->e_nname, nosubordinates );
|
||||
if ( bd != be ) {
|
||||
fprintf( stderr, "%s: line %d: "
|
||||
"database (%s) not configured to hold \"%s\"\n",
|
||||
"database #%d (%s) not configured to hold \"%s\"",
|
||||
progname, lineno,
|
||||
be ? be->be_suffix[0].bv_val : "<none>",
|
||||
dbnum,
|
||||
be->be_suffix[0].bv_val,
|
||||
e->e_dn );
|
||||
fprintf( stderr, "%s: line %d: "
|
||||
"database (%s) not configured to hold \"%s\"\n",
|
||||
progname, lineno,
|
||||
be ? be->be_nsuffix[0].bv_val : "<none>",
|
||||
e->e_ndn );
|
||||
if ( bd ) {
|
||||
BackendDB *bdtmp;
|
||||
int dbidx = 0;
|
||||
LDAP_STAILQ_FOREACH( bdtmp, &backendDB, be_next ) {
|
||||
if ( bdtmp == bd ) break;
|
||||
dbidx++;
|
||||
}
|
||||
|
||||
assert( bdtmp != NULL );
|
||||
|
||||
fprintf( stderr, "; did you mean to use database #%d (%s)?",
|
||||
dbidx,
|
||||
bd->be_suffix[0].bv_val );
|
||||
|
||||
} else {
|
||||
fprintf( stderr, "; no database configured for that naming context" );
|
||||
}
|
||||
fprintf( stderr, "\n" );
|
||||
rc = EXIT_FAILURE;
|
||||
entry_free( e );
|
||||
if( continuemode ) continue;
|
||||
|
@ -218,7 +218,7 @@ slap_tool_init(
|
||||
char *subtree = NULL;
|
||||
char *ldiffile = NULL;
|
||||
char **debug_unknowns = NULL;
|
||||
int rc, i, dbnum;
|
||||
int rc, i;
|
||||
int mode = SLAP_TOOL_MODE;
|
||||
int truncatemode = 0;
|
||||
int use_glue = 1;
|
||||
@ -353,7 +353,7 @@ slap_tool_init(
|
||||
break;
|
||||
|
||||
case 'n': /* which config file db to index */
|
||||
if ( lutil_atoi( &dbnum, optarg ) ) {
|
||||
if ( lutil_atoi( &dbnum, optarg ) || dbnum < 0 ) {
|
||||
usage( tool, progname );
|
||||
}
|
||||
break;
|
||||
@ -689,12 +689,12 @@ slap_tool_init(
|
||||
progname, dbnum, 0 );
|
||||
}
|
||||
|
||||
} else if ( dbnum < 0 || dbnum > (nbackends-1) ) {
|
||||
} else if ( dbnum >= nbackends ) {
|
||||
fprintf( stderr,
|
||||
"Database number selected via -n is out of range\n"
|
||||
"Must be in the range 0 to %d"
|
||||
" (number of configured databases)\n",
|
||||
nbackends-1 );
|
||||
" (less than the number of configured databases, %d)\n",
|
||||
nbackends - 1, nbackends );
|
||||
exit( EXIT_FAILURE );
|
||||
|
||||
} else {
|
||||
@ -705,6 +705,15 @@ slap_tool_init(
|
||||
}
|
||||
|
||||
startup:;
|
||||
if ( be ) {
|
||||
BackendDB *bdtmp;
|
||||
|
||||
dbnum = 0;
|
||||
LDAP_STAILQ_FOREACH( bdtmp, &backendDB, be_next ) {
|
||||
if ( bdtmp == be ) break;
|
||||
dbnum++;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CSRIMALLOC
|
||||
mal_leaktrace(1);
|
||||
|
@ -34,6 +34,7 @@ enum slaptool {
|
||||
|
||||
typedef struct tool_vars {
|
||||
Backend *tv_be;
|
||||
int tv_dbnum;
|
||||
int tv_verbose;
|
||||
int tv_quiet;
|
||||
int tv_update_ctxcsn;
|
||||
@ -66,6 +67,7 @@ typedef struct tool_vars {
|
||||
extern tool_vars tool_globals;
|
||||
|
||||
#define be tool_globals.tv_be
|
||||
#define dbnum tool_globals.tv_dbnum
|
||||
#define verbose tool_globals.tv_verbose
|
||||
#define quiet tool_globals.tv_quiet
|
||||
#define jumpline tool_globals.tv_jumpline
|
||||
|
Loading…
Reference in New Issue
Block a user