X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Ftools%2Fldbmtest.c;h=1897c0245b83721dc97f7148e26e8ccee9de4cae;hb=403f4479bc9f9a864122d4aeecf7284408918302;hp=5fd7119dadff2e5c1d9dea6eb454b16fc6c1a642;hpb=216049bd12861357e0bf080fe10816103c3c3bda;p=openldap diff --git a/servers/slapd/tools/ldbmtest.c b/servers/slapd/tools/ldbmtest.c index 5fd7119dad..1897c0245b 100644 --- a/servers/slapd/tools/ldbmtest.c +++ b/servers/slapd/tools/ldbmtest.c @@ -1,9 +1,14 @@ +/* $OpenLDAP$ */ +/* + * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ #include "portable.h" #include -#include #include +#include #include #include #include @@ -11,27 +16,32 @@ #include #include +#ifdef HAVE_SYS_RESOURCE_H #include +#endif +#ifdef HAVE_SYS_PARAM_H #include +#endif #include #ifdef HAVE_FCNTL_H #include #endif -#include "ldapconfig.h" +#ifdef HAVE_IO_H +#include +#endif + #include "../slap.h" #include "../back-ldbm/back-ldbm.h" -#define EDITOR "/usr/ucb/vi" - -static struct dbcache *openchoice(char c, int mode, int verbose, char **fname); +static DBCache *openchoice(char c, int mode, int verbose, char **fname); static void print_entry(FILE *fp, char c, Datum *key, char *klabel, Datum *data, char *dlabel); -static void free_and_close(struct dbcache *dbc, Datum key, Datum data); +static void free_and_close(DBCache *dbc, Datum key, Datum data); static void edit_entry(char c, Datum *data); static void get_keydata(FILE *fp, char c, Datum *key, Datum *data); -static struct dbcache *dbc; +static DBCache *dbc; static LDBM dbp; static Backend *be = NULL; @@ -41,15 +51,18 @@ main( int argc, char **argv ) char buf[256]; Datum savekey, key, data, last; char *fname; - ID id; + ID id, cursor; ID_BLOCK *idl; Backend *tbe; int i; char *tailorfile; -#ifdef HAVE_BERKELEY_DB2 - DBC *cursorp; -#endif + LDBMCursor *cursorp; + + fprintf(stderr, + "ldbmtest not updated to support new index formats!\n" ); + exit( EXIT_FAILURE ); + ldbm_datum_init( savekey ); ldbm_datum_init( key ); @@ -71,8 +84,7 @@ main( int argc, char **argv ) fprintf( stderr, "usage: %s [-d level] [-f slapdconfigfile]\n", argv[0] ); - exit( -1 ); - break; + exit( EXIT_FAILURE ); } } @@ -82,7 +94,7 @@ main( int argc, char **argv ) slap_init(SLAP_TOOL_MODE, "ldbmtest"); read_config( tailorfile ); - slap_startup(-1); + slap_startup( NULL ); while ( 1 ) { printf( "dbtest: " ); @@ -105,7 +117,7 @@ main( int argc, char **argv ) } break; - case 'l': /* lookup somethig in an index */ + case 'l': /* lookup something in an index */ if ( (dbc = openchoice( buf[1], LDBM_READER, 1, NULL )) == NULL ) { continue; @@ -144,15 +156,9 @@ main( int argc, char **argv ) } savekey.dptr = NULL; -#ifdef HAVE_BERKELEY_DB2 for ( key = ldbm_firstkey( dbc->dbc_db, &cursorp ); key.dptr != NULL; key = ldbm_nextkey( dbc->dbc_db, key, cursorp ) ) -#else - for ( key = ldbm_firstkey( dbc->dbc_db ); - key.dptr != NULL; - key = ldbm_nextkey( dbc->dbc_db, key ) ) -#endif { if ( savekey.dptr != NULL ) ldbm_datum_free( dbc->dbc_db, savekey ); @@ -190,7 +196,7 @@ main( int argc, char **argv ) if ( ldbm_errno( dbc->dbc_db ) == 0 ) { perror( "ldbm_delete" ); } else { - fprintf( stderr, "db_errno %d", + fprintf( stderr, "db_errno=%d", ldbm_errno( dbc->dbc_db ) ); } } @@ -199,6 +205,7 @@ main( int argc, char **argv ) free_and_close( dbc, key, data ); break; +#ifndef HAVE_WINSOCK case 'e': /* edit an entry */ if ( (dbc = openchoice( buf[1], LDBM_WRITER, 1, NULL )) == NULL ) { @@ -212,7 +219,7 @@ main( int argc, char **argv ) if ( ldbm_errno( dbc->dbc_db ) == 0 ) { perror( "ldbm_fetch" ); } else { - fprintf( stderr, "db_errno %d\n", + fprintf( stderr, "db_errno=%d\n", ldbm_errno( dbc->dbc_db ) ); } free_and_close( dbc, key, data ); @@ -230,13 +237,14 @@ main( int argc, char **argv ) if ( ldbm_errno( dbc->dbc_db ) == 0 ) { perror( "ldbm_store" ); } else { - fprintf( stderr, "db_errno %d\n", + fprintf( stderr, "db_errno=%d\n", ldbm_errno( dbc->dbc_db ) ); } } free_and_close( dbc, key, data ); break; +#endif case 'a': /* add an entry */ if ( (dbc = openchoice( buf[1], LDBM_WRITER, 1, NULL )) @@ -251,7 +259,7 @@ main( int argc, char **argv ) if ( ldbm_errno( dbc->dbc_db ) == 0 ) { perror( "ldbm_store" ); } else { - fprintf( stderr, "db_errno %d\n", + fprintf( stderr, "db_errno=%d\n", ldbm_errno( dbc->dbc_db ) ); } } @@ -268,8 +276,8 @@ main( int argc, char **argv ) get_keydata( stdin, buf[1], &key, &data ); idl = (ID_BLOCK *) data.dptr; - for ( id = idl_firstid( idl ); id != NOID; - id = idl_nextid( idl, id ) ) { + for ( id = idl_firstid( idl, &cursor ); id != NOID; + id = idl_nextid( idl, &cursor ) ) { if ( idl_insert_key( be, dbc, key, id ) != 0 ) { fprintf( stderr, @@ -286,7 +294,7 @@ main( int argc, char **argv ) printf( "suffix: " ); fflush( stdout ); if ( fgets( buf, sizeof(buf), stdin ) == NULL ) { - exit( 0 ); + exit( EXIT_SUCCESS ); } else { buf[strlen( buf ) - 1] = '\0'; } @@ -316,14 +324,9 @@ main( int argc, char **argv ) last.dptr = NULL; -#ifdef HAVE_BERKELEY_DB2 for ( key = ldbm_firstkey( dbp, &cursorp ); key.dptr != NULL; key = ldbm_nextkey( dbp, last, cursorp ) ) -#else - for ( key = ldbm_firstkey( dbp ); key.dptr != NULL; - key = ldbm_nextkey( dbp, last ) ) -#endif { if ( last.dptr != NULL ) { ldbm_datum_free( dbp, last ); @@ -349,7 +352,6 @@ main( int argc, char **argv ) printf( " b => change default backend\n" ); printf( " B => print default backend\n" ); printf( "where is a char selecting the index:\n" ); - printf( " c => id2children\n" ); printf( " d => dn2id\n" ); printf( " e => id2entry\n" ); printf( " f => arbitrary file\n" ); @@ -358,14 +360,14 @@ main( int argc, char **argv ) } } - slap_shutdown(-1); + slap_shutdown( NULL ); slap_destroy(); - return( 0 ); + return( EXIT_SUCCESS ); } static void -free_and_close( struct dbcache *dbc, Datum key, Datum data ) +free_and_close( DBCache *dbc, Datum key, Datum data ) { ldbm_cache_really_close( be, dbc ); if ( key.dptr != NULL ) @@ -393,10 +395,10 @@ static void get_idlist( FILE *fp, Datum *data ) { char buf[20]; - int i, j, fd, tty; + int i, fd, tty; ID_BLOCK *p; - int psize, pmax; - int nmax, nids; + unsigned int psize, pmax; + unsigned int nmax, nids; fd = fileno( fp ); tty = isatty( fd ); @@ -436,7 +438,7 @@ get_idlist( FILE *fp, Datum *data ) printf( "%d IDs entered. Max number of ids? [%d] ", i, i ); if ( fgets( buf, sizeof(buf), fp ) != NULL && - isdigit( buf[0] ) ) { + isdigit( (unsigned char) buf[0] ) ) { nmax = atol( buf ); } } else { @@ -464,7 +466,7 @@ get_entry( FILE *fp, Datum *data ) { char buf[BUFSIZ]; char *p; - int pmax, psize, len; + unsigned int pmax, psize, len; int fd; fd = fileno( fp ); @@ -493,6 +495,7 @@ get_entry( FILE *fp, Datum *data ) data->dsize = psize + 1; } +#ifndef HAVE_WINSOCK static void edit_entry( char c, Datum *data ) { @@ -529,20 +532,21 @@ edit_entry( char c, Datum *data ) char *editor; if ( (editor = getenv( "EDITOR" )) == NULL ) { - editor = EDITOR; + editor = LDAP_EDITOR; } execl( editor, editor, tmpname, NULL ); perror( "execl" ); - exit( 1 ); + exit( EXIT_FAILURE ); } fclose( fp ); #ifdef HAVE_WAITPID - if ( waitpid( (pid_t) -1, NULL, WAIT_FLAGS ) < 0 ) { + if ( waitpid( (pid_t) -1, NULL, WAIT_FLAGS ) < 0 ) #else - if ( wait4( (pid_t) -1, &status, WAIT_FLAGS, 0 ) < 0 ) { + if ( wait3( (pid_t) -1, &status, WAIT_FLAGS, 0 ) < 0 ) #endif + { perror( "wait" ); return; } @@ -558,22 +562,23 @@ edit_entry( char c, Datum *data ) fclose( fp ); unlink( tmpname ); } +#endif -static struct dbcache * +static DBCache * openfile( char *name, int namesiz, int mode, int verbose, char c ) { - struct dbcache *dbc; + DBCache *dbc; if ( name == NULL || *name == '\0' ) { if ( c == 'f' ) { printf( " file: " ); if ( fgets( name, namesiz, stdin ) == NULL ) - exit( 0 ); + exit( EXIT_SUCCESS ); name[strlen( name ) - 1] = '\0'; } else { printf( " attr: " ); if ( fgets( name, namesiz, stdin ) == NULL ) - exit( 0 ); + exit( EXIT_SUCCESS ); name[strlen( name ) - 1] = '\0'; } } @@ -588,15 +593,12 @@ openfile( char *name, int namesiz, int mode, int verbose, char c ) return( dbc ); } -static struct dbcache * +static DBCache * openchoice( char c, int mode, int verbose, char **fname ) { static char name[MAXPATHLEN]; switch ( c ) { - case 'c': /* id2children */ - sprintf( name, "id2children" ); - break; case 'd': /* dn2id */ sprintf( name, "dn2id" ); break; @@ -612,7 +614,7 @@ openchoice( char c, int mode, int verbose, char **fname ) } break; default: - printf( "specify one of [fdeci] to select file\n" ); + printf( "specify one of [fdei] to select file\n" ); return( NULL ); break; } @@ -635,7 +637,7 @@ print_entry( { ID id; ID_BLOCK *idl; - int i; + unsigned int i; char msg[2]; if ( data != NULL && data->dptr == NULL ) { @@ -645,7 +647,7 @@ print_entry( if ( ldbm_errno( dbp ) == 0 ) perror( msg ); else - fprintf( stderr, "%s: db_errno %d\n", msg, + fprintf( stderr, "%s: db_errno=%d\n", msg, ldbm_errno( dbp ) ); return; } @@ -664,7 +666,7 @@ print_entry( case 'e': /* id2entry - key is dnid, data is entry */ if ( key != NULL ) { SAFEMEMCPY( (char *) &id, key->dptr, sizeof(ID) ); - fprintf( fp, "%s %lu\n", klabel, id ); + fprintf( fp, "%s %ld\n", klabel, id ); } if ( data != NULL ) { if ( dlabel ) { @@ -675,7 +677,6 @@ print_entry( } break; - case 'c': case 'i': /* index - key is string, data is dnid[] */ if ( key != NULL ) fprintf( fp, "%s%s (len %d)\n", klabel, key->dptr, @@ -692,8 +693,7 @@ print_entry( fprintf( fp, "\t%ld\n", ID_BLOCK_ID(idl, i) ); } } else if ( ID_BLOCK_ALLIDS( idl ) ) { - fprintf( fp, "\tALLIDS (1..%ld)\n", - ID_BLOCK_NIDS(idl) - 1 ); + fprintf( fp, "\tALLIDS\n" ); } else { for ( i = 0; i < ID_BLOCK_NIDS(idl); i++ ) { fprintf( fp, "\t%ld\n", ID_BLOCK_ID(idl,i) ); @@ -712,7 +712,7 @@ print_entry( break; default: - fprintf( stderr, "specify [deci] to select a file\n" ); + fprintf( stderr, "specify [dei] to select a file\n" ); break; } } @@ -733,7 +733,7 @@ get_keydata( FILE *fp, char c, Datum *key, Datum *data ) if ( tty ) printf( " dn: " ); if ( fgets( kbuf, sizeof(kbuf), fp ) == NULL ) { - exit( 0 ); + exit( EXIT_SUCCESS ); } kbuf[strlen( kbuf ) - 1] = '\0'; key->dptr = strdup( kbuf ); @@ -744,7 +744,7 @@ get_keydata( FILE *fp, char c, Datum *key, Datum *data ) if ( tty ) printf( " dnid: " ); if ( fgets( dbuf, sizeof(dbuf), fp ) == NULL ) { - exit( 0 ); + exit( EXIT_SUCCESS ); } n = atol( dbuf ); data->dptr = (char *) malloc( sizeof(n) ); @@ -758,7 +758,7 @@ get_keydata( FILE *fp, char c, Datum *key, Datum *data ) if ( tty ) printf( " dnid: " ); if ( fgets( kbuf, sizeof(kbuf), fp ) == NULL ) { - exit( 0 ); + exit( EXIT_SUCCESS ); } n = atol( kbuf ); key->dptr = (char *) malloc( sizeof(n) ); @@ -771,13 +771,12 @@ get_keydata( FILE *fp, char c, Datum *key, Datum *data ) } break; - case 'c': /* id2children - key is string dnid, data is dnid[] */ case 'i': /* index - key is string, data is dnid[] */ if ( key != NULL ) { if ( tty ) printf( " key: " ); if ( fgets( kbuf, sizeof(kbuf), fp ) == NULL ) { - exit( 0 ); + exit( EXIT_SUCCESS ); } kbuf[strlen( kbuf ) - 1] = '\0'; key->dptr = strdup( kbuf ); @@ -790,7 +789,7 @@ get_keydata( FILE *fp, char c, Datum *key, Datum *data ) break; default: - fprintf(stderr, "specify [deci] to select file type\n"); + fprintf(stderr, "specify [dei] to select file type\n"); break; } }