X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Ftools%2Fcentipede.c;h=306203427843922e4f48f4f862f0478ea9a0539f;hb=abbcc73794ed138a49630ccf86d8b404c3f7c71e;hp=8e964ed05e90f3619ba48e891d90f4e1472048cd;hpb=6f0bc8c99713a64c6b65de9b8cd1e30c014b370f;p=openldap diff --git a/servers/slapd/tools/centipede.c b/servers/slapd/tools/centipede.c index 8e964ed05e..3062034278 100644 --- a/servers/slapd/tools/centipede.c +++ b/servers/slapd/tools/centipede.c @@ -3,10 +3,12 @@ #include "portable.h" #include +#include #include #include #include +#include /* get link(), unlink() */ #include #include @@ -40,13 +42,13 @@ int destldapauthmethod; int verbose; int not; -static LDAP *start_ldap_search(); -static LDAP *bind_to_destination_ldap(); -static int create_tmp_files(); -static int generate_new_centroids(); -static LDAPMod **diff_centroids(); -static LDAPMod **full_centroid(); -static char **charray_add_dup(); +static LDAP *start_ldap_search(char *ldapsrcurl, char *ldapfilter, char **attrs); +static LDAP *bind_to_destination_ldap(char *ldapsrcurl, char *ldapdesturl); +static int create_tmp_files(char **attrs, char ***tmpfile, LDBM **ldbm); +static int generate_new_centroids(LDAP *ld, char **attrs, LDBM *ldbm); +static LDAPMod **diff_centroids(char *attr, LDBM oldbm, LDBM nldbm, int nentries); +static LDAPMod **full_centroid(char *attr, LDBM ldbm, int nentries); +static char **charray_add_dup(char ***a, int *cur, int *max, char *s); static void usage( char *name ) { @@ -71,6 +73,7 @@ static void usage( char *name ) fprintf( stderr, "\t-c size\t\tldbm cache size\n" ); } +int main( int argc, char **argv ) { char *ldapfilter; @@ -84,13 +87,11 @@ main( int argc, char **argv ) char buf[BUFSIZ]; int i, j, k, count; char *s; - extern int optind; - extern char *optarg; ldapsrcurl = NULL; ldapdesturl = NULL; - ldaphost = LDAPHOST; - ldapbase = DEFAULT_BASE; + ldaphost = NULL; + ldapbase = NULL; srcldapauthmethod = LDAP_AUTH_SIMPLE; destldapauthmethod = LDAP_AUTH_SIMPLE; srcldapbinddn = NULL; @@ -383,7 +384,7 @@ start_ldap_search( fflush( stdout ); } - if ( (ld = ldap_open( ldaphost, LDAP_PORT )) == NULL ) { + if ( (ld = ldap_open( ldaphost, 0 )) == NULL ) { perror( "ldap_open" ); return( NULL ); } @@ -473,6 +474,8 @@ generate_new_centroids( char **val; char last; + ldbm_datum_init( data ); + if ( verbose ) { printf( "Generating new centroids for..." ); fflush( stdout ); @@ -495,6 +498,9 @@ generate_new_centroids( /* for each value */ for ( j = 0; val[j] != NULL; j++ ) { + + ldbm_datum_init( key ); + /* normalize the value */ for ( s = val[j]; *s; s++ ) { if ( isascii( *s ) ) { @@ -555,7 +561,6 @@ diff_centroids( Datum olast, nlast; Datum lastkey, key; Datum data; - int rc; LDAPMod **mods; char **avals, **dvals; int amax, acur, dmax, dcur; @@ -571,6 +576,14 @@ diff_centroids( fflush( stdout ); } + ldbm_datum_init( okey ); + ldbm_datum_init( nkey ); + ldbm_datum_init( olast ); + ldbm_datum_init( nlast ); + ldbm_datum_init( lastkey ); + ldbm_datum_init( key ); + ldbm_datum_init( data ); + if ( (mods = (LDAPMod **) malloc( sizeof(LDAPMod *) * 4 )) == NULL || (mods[0] = (LDAPMod *) malloc( sizeof(LDAPMod) )) == NULL || (mods[1] = (LDAPMod *) malloc( sizeof(LDAPMod) )) == NULL || @@ -619,7 +632,7 @@ diff_centroids( okey.dptr != NULL && nkey.dptr != NULL; ) #endif { - rc = strcmp( okey.dptr, nkey.dptr ); + int rc = strcmp( okey.dptr, nkey.dptr ); if ( rc == 0 ) { /* value is in both places - leave it */ @@ -833,6 +846,9 @@ full_centroid( fflush( stdout ); } + ldbm_datum_init( key ); + ldbm_datum_init( lastkey ); + if ( (mods = (LDAPMod **) malloc( sizeof(LDAPMod *) * 3 )) == NULL || (mods[0] = (LDAPMod *) malloc( sizeof(LDAPMod) )) == NULL || (mods[1] = (LDAPMod *) malloc( sizeof(LDAPMod) )) == NULL || @@ -961,7 +977,7 @@ bind_to_destination_ldap( free( ldapbase ); ldapbase = strdup( buf ); - if ( (ld = ldap_open( ldaphost, LDAP_PORT )) == NULL ) { + if ( (ld = ldap_open( ldaphost, 0 )) == NULL ) { perror( "ldap_open" ); return( NULL ); }