]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapindex.c
Merge remote-tracking branch 'origin/mdb.master' into OPENLDAP_REL_ENG_2_4
[openldap] / servers / slapd / slapindex.c
index 81ddf6ee93feaaac04e6c6bde7b8da03e4ade845..639859f3ad51fb60e723aa76ee247aabf79490dc 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2008 The OpenLDAP Foundation.
+ * Copyright 1998-2014 The OpenLDAP Foundation.
  * Portions Copyright 1998-2003 Kurt D. Zeilenga.
  * All rights reserved.
  *
@@ -43,7 +43,7 @@ slapindex( int argc, char **argv )
 
        if( !be->be_entry_open ||
                !be->be_entry_close ||
-               !be->be_entry_first ||
+               !( be->be_entry_first || be->be_entry_first_x ) ||
                !be->be_entry_next  ||
                !be->be_entry_reindex )
        {
@@ -77,11 +77,16 @@ slapindex( int argc, char **argv )
                        progname );
                exit( EXIT_FAILURE );
        }
-       
-       for ( id = be->be_entry_first( be );
-               id != NOID;
-               id = be->be_entry_next( be ) )
-       {
+
+       if ( be->be_entry_first ) {
+               id = be->be_entry_first( be );
+
+       } else {
+               assert( be->be_entry_first_x != NULL );
+               id = be->be_entry_first_x( be, NULL, LDAP_SCOPE_DEFAULT, NULL );
+       }
+
+       for ( ; id != NOID; id = be->be_entry_next( be ) ) {
                int rtn;
 
                if( verbose ) {