/* centipede.c - generate and install indexing information (view w/tabstop=4) */
+#include "portable.h"
+
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int amax, acur, dmax, dcur;
char **vals;
+#ifdef LDBM_USE_DB2
+ DBC *ocursorp;
+ DBC *ncursorp;
+#endif /* LDBM_USE_DB2 */
+
if ( verbose ) {
printf( "Generating mods for differential %s centroid...", attr );
fflush( stdout );
olast.dptr = NULL;
nlast.dptr = NULL;
+#ifdef LDBM_USE_DB2
+ for ( okey = ldbm_firstkey( oldbm, &ocursorp ),
+ nkey = ldbm_firstkey( nldbm, &ncursorp );
+ okey.dptr != NULL && nkey.dptr != NULL; )
+#else
for ( okey = ldbm_firstkey( oldbm ), nkey = ldbm_firstkey( nldbm );
okey.dptr != NULL && nkey.dptr != NULL; )
+#endif
{
rc = strcmp( okey.dptr, nkey.dptr );
}
nlast = nkey;
+#ifdef LDBM_USE_DB2
+ okey = ldbm_nextkey( oldbm, olast, ocursorp );
+ nkey = ldbm_nextkey( nldbm, nlast, ncursorp );
+#else
okey = ldbm_nextkey( oldbm, olast );
nkey = ldbm_nextkey( nldbm, nlast );
+#endif
} else if ( rc > 0 ) {
/* new value is not in old centroid - add it */
if ( charray_add_dup( &avals, &acur, &amax, nkey.dptr ) == NULL ) {
ldbm_datum_free( nldbm, nlast );
}
nlast = nkey;
+
+#ifdef LDBM_USE_DB2
+ nkey = ldbm_nextkey( nldbm, nlast, ncursorp );
+#else
nkey = ldbm_nextkey( nldbm, nlast );
+#endif
} else {
/* old value is not in new centroid - delete it */
if ( charray_add_dup( &dvals, &dcur, &dmax, okey.dptr ) == NULL ) {
ldbm_datum_free( oldbm, olast );
}
olast = okey;
+
+#ifdef LDBM_USE_DB2
+ okey = ldbm_nextkey( oldbm, olast, ocursorp );
+#else
okey = ldbm_nextkey( oldbm, olast );
+#endif
}
}
return( NULL );
}
+#ifdef LDBM_USE_DB2
+ okey = ldbm_nextkey( oldbm, olast, ocursorp );
+#else
okey = ldbm_nextkey( oldbm, olast );
+#endif
if ( olast.dptr != NULL ) {
ldbm_datum_free( oldbm, olast );
}
return( NULL );
}
+#ifdef LDBM_USE_DB2
+ nkey = ldbm_nextkey( nldbm, nlast, ncursorp );
+#else
nkey = ldbm_nextkey( nldbm, nlast );
+#endif
if ( nlast.dptr != NULL ) {
ldbm_datum_free( nldbm, nlast );
}
/* generate list of values to add */
lastkey.dptr = NULL;
+#ifdef LDBM_USE_DB2
+ for ( key = ldbm_firstkey( nldbm, &ncursorp ); key.dptr != NULL;
+ key = ldbm_nextkey( nldbm, lastkey, ncursorp ) )
+#else
for ( key = ldbm_firstkey( nldbm ); key.dptr != NULL;
- key = ldbm_nextkey( nldbm, lastkey ) ) {
+ key = ldbm_nextkey( nldbm, lastkey ) )
+#endif
+ {
/* see if it's in the old one */
data = ldbm_fetch( oldbm, key );
/* generate list of values to delete */
lastkey.dptr = NULL;
+#ifdef LDBM_USE_DB2
+ for ( key = ldbm_firstkey( oldbm, &ocursorp ); key.dptr != NULL;
+ key = ldbm_nextkey( oldbm, lastkey, ocursorp ) )
+#else
for ( key = ldbm_firstkey( oldbm ); key.dptr != NULL;
- key = ldbm_nextkey( oldbm, lastkey ) ) {
+ key = ldbm_nextkey( oldbm, lastkey ) )
+#endif
+ {
/* see if it's in the new one */
data = ldbm_fetch( nldbm, key );
char **vals;
int vcur, vmax;
+#ifdef LDBM_USE_DB2
+ DBC *cursorp;
+#endif
+
if ( verbose ) {
printf( "Generating mods for full %s centroid...", attr );
fflush( stdout );
lastkey.dptr = NULL;
vals = NULL;
vcur = vmax = 0;
+#ifdef LDBM_USE_DB2
+ for ( key = ldbm_firstkey( ldbm, &cursorp ); key.dptr != NULL;
+ key = ldbm_nextkey( ldbm, lastkey, cursorp ) )
+#else
for ( key = ldbm_firstkey( ldbm ); key.dptr != NULL;
- key = ldbm_nextkey( ldbm, lastkey ) ) {
+ key = ldbm_nextkey( ldbm, lastkey ) )
+#endif
+ {
if ( charray_add_dup( &vals, &vcur, &vmax, key.dptr ) == NULL ) {
ldap_mods_free( mods, 1 );
return( NULL );