/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2004 The OpenLDAP Foundation.
+ * Copyright 2004-2005 The OpenLDAP Foundation.
* Portions Copyright 2004 Symas Corporation.
* All rights reserved.
*
} unique_data;
typedef struct unique_counter_s {
+ struct berval *ndn;
int count;
} unique_counter;
for(up = ud->attrs; up; up = up->next)
if(!strcmp(argv[i], up->attr->ad_cname.bv_val)) {
Debug(LDAP_DEBUG_ANY,
- "%s: line %d: duplicate attribute <s>, ignored\n",
+ "%s: line %d: duplicate attribute <%s>, ignored\n",
fname, lineno, argv[i]);
continue;
}
SlapReply *rs
)
{
+ unique_counter *uc;
+
/* because you never know */
if(!op || !rs) return(0);
/* Only search entries are interesting */
if(rs->sr_type != REP_SEARCH) return(0);
+ uc = op->o_callback->sc_private;
+
+ /* Ignore the current entry */
+ if ( dn_match( uc->ndn, &rs->sr_entry->e_nname )) return(0);
+
Debug(LDAP_DEBUG_TRACE, "==> count_attr_cb <%s>\n",
rs->sr_entry ? rs->sr_entry->e_name.bv_val : "UNKNOWN_DN", 0, 0);
- ((unique_counter*)op->o_callback->sc_private)->count++;
+ uc->count++;
return(0);
}
unique_data *ud = on->on_bi.bi_private;
SlapReply nrs = { REP_RESULT };
slap_callback cb = { NULL, NULL, NULL, NULL }; /* XXX */
- unique_counter uq = { 0 };
+ unique_counter uq = { NULL, 0 };
int rc;
nop->ors_filter = str2filter_x(nop, key);
nop->o_tag = LDAP_REQ_SEARCH;
nop->ors_scope = LDAP_SCOPE_SUBTREE;
nop->ors_deref = LDAP_DEREF_NEVER;
+ nop->ors_limit = NULL;
nop->ors_slimit = SLAP_NO_LIMIT;
nop->ors_tlimit = SLAP_NO_LIMIT;
nop->ors_attrs = slap_anlist_no_attrs;
nop->ors_attrsonly = 1;
+ uq.ndn = &op->o_req_ndn;
+
nop->o_req_ndn = ud->dn;
nop->o_ndn = op->o_bd->be_rootndn;