Commit f3014a23 authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

better diagnostics

parent 86e048aa
...@@ -143,7 +143,9 @@ slapadd( int argc, char **argv ) ...@@ -143,7 +143,9 @@ slapadd( int argc, char **argv )
/* nextline is the line number of the end of the current entry */ /* nextline is the line number of the end of the current entry */
for( lineno=1; ldif_read_record( ldiffp, &nextline, &buf, &lmax ); for( lineno=1; ldif_read_record( ldiffp, &nextline, &buf, &lmax );
lineno=nextline+1 ) { lineno=nextline+1 )
{
BackendDB *bd;
Entry *e; Entry *e;
if ( lineno < jumpline ) if ( lineno < jumpline )
...@@ -173,7 +175,8 @@ slapadd( int argc, char **argv ) ...@@ -173,7 +175,8 @@ slapadd( int argc, char **argv )
/* make sure the DN is not empty */ /* make sure the DN is not empty */
if( BER_BVISEMPTY( &e->e_nname ) && 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", fprintf( stderr, "%s: empty dn=\"%s\" (line=%d)\n",
progname, e->e_dn, lineno ); progname, e->e_dn, lineno );
rc = EXIT_FAILURE; rc = EXIT_FAILURE;
...@@ -183,19 +186,32 @@ slapadd( int argc, char **argv ) ...@@ -183,19 +186,32 @@ slapadd( int argc, char **argv )
} }
/* check backend */ /* check backend */
if( select_backend( &e->e_nname, nosubordinates ) bd = select_backend( &e->e_nname, nosubordinates );
!= be ) if ( bd != be ) {
{
fprintf( stderr, "%s: line %d: " fprintf( stderr, "%s: line %d: "
"database (%s) not configured to hold \"%s\"\n", "database #%d (%s) not configured to hold \"%s\"",
progname, lineno, progname, lineno,
be ? be->be_suffix[0].bv_val : "<none>", dbnum,
be->be_suffix[0].bv_val,
e->e_dn ); e->e_dn );
fprintf( stderr, "%s: line %d: " if ( bd ) {
"database (%s) not configured to hold \"%s\"\n", BackendDB *bdtmp;
progname, lineno, int dbidx = 0;
be ? be->be_nsuffix[0].bv_val : "<none>", LDAP_STAILQ_FOREACH( bdtmp, &backendDB, be_next ) {
e->e_ndn ); 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; rc = EXIT_FAILURE;
entry_free( e ); entry_free( e );
if( continuemode ) continue; if( continuemode ) continue;
......
...@@ -218,7 +218,7 @@ slap_tool_init( ...@@ -218,7 +218,7 @@ slap_tool_init(
char *subtree = NULL; char *subtree = NULL;
char *ldiffile = NULL; char *ldiffile = NULL;
char **debug_unknowns = NULL; char **debug_unknowns = NULL;
int rc, i, dbnum; int rc, i;
int mode = SLAP_TOOL_MODE; int mode = SLAP_TOOL_MODE;
int truncatemode = 0; int truncatemode = 0;
int use_glue = 1; int use_glue = 1;
...@@ -353,7 +353,7 @@ slap_tool_init( ...@@ -353,7 +353,7 @@ slap_tool_init(
break; break;
case 'n': /* which config file db to index */ case 'n': /* which config file db to index */
if ( lutil_atoi( &dbnum, optarg ) ) { if ( lutil_atoi( &dbnum, optarg ) || dbnum < 0 ) {
usage( tool, progname ); usage( tool, progname );
} }
break; break;
...@@ -689,12 +689,12 @@ slap_tool_init( ...@@ -689,12 +689,12 @@ slap_tool_init(
progname, dbnum, 0 ); progname, dbnum, 0 );
} }
} else if ( dbnum < 0 || dbnum > (nbackends-1) ) { } else if ( dbnum >= nbackends ) {
fprintf( stderr, fprintf( stderr,
"Database number selected via -n is out of range\n" "Database number selected via -n is out of range\n"
"Must be in the range 0 to %d" "Must be in the range 0 to %d"
" (number of configured databases)\n", " (less than the number of configured databases, %d)\n",
nbackends-1 ); nbackends - 1, nbackends );
exit( EXIT_FAILURE ); exit( EXIT_FAILURE );
} else { } else {
...@@ -705,6 +705,15 @@ slap_tool_init( ...@@ -705,6 +705,15 @@ slap_tool_init(
} }
startup:; startup:;
if ( be ) {
BackendDB *bdtmp;
dbnum = 0;
LDAP_STAILQ_FOREACH( bdtmp, &backendDB, be_next ) {
if ( bdtmp == be ) break;
dbnum++;
}
}
#ifdef CSRIMALLOC #ifdef CSRIMALLOC
mal_leaktrace(1); mal_leaktrace(1);
......
...@@ -34,6 +34,7 @@ enum slaptool { ...@@ -34,6 +34,7 @@ enum slaptool {
typedef struct tool_vars { typedef struct tool_vars {
Backend *tv_be; Backend *tv_be;
int tv_dbnum;
int tv_verbose; int tv_verbose;
int tv_quiet; int tv_quiet;
int tv_update_ctxcsn; int tv_update_ctxcsn;
...@@ -66,6 +67,7 @@ typedef struct tool_vars { ...@@ -66,6 +67,7 @@ typedef struct tool_vars {
extern tool_vars tool_globals; extern tool_vars tool_globals;
#define be tool_globals.tv_be #define be tool_globals.tv_be
#define dbnum tool_globals.tv_dbnum
#define verbose tool_globals.tv_verbose #define verbose tool_globals.tv_verbose
#define quiet tool_globals.tv_quiet #define quiet tool_globals.tv_quiet
#define jumpline tool_globals.tv_jumpline #define jumpline tool_globals.tv_jumpline
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment