Dua
view release on metacpan or search on metacpan
croak ("Number of attribute/value pairs must be even");
}
atlist = NULL;
for(i=2;i<items;(i++,i++))
dua_addpair(&atlist,(char *)SvPV(ST(i), na),(char *)SvPV(ST(i+1), na));
RETVAL = dua_add (session, rdn, atlist);
dua_freelist (atlist);
}
OUTPUT:
RETVAL
int
dua_modattr (session, rdn, ...)
ldap_session_t *session
char *rdn
CODE:
{
atlist_t *atlist;
register int i;
if ((items - 2) % 2 != 0)
{
croak ("Number of attribute/value pairs must be even");
}
atlist = NULL;
for(i=2;i<items;(i++,i++))
dua_addpair(&atlist,(char *)SvPV(ST(i), na),(char *)SvPV(ST(i+1), na));
RETVAL = dua_modattr (session, rdn, atlist);
dua_freelist (atlist);
}
OUTPUT:
RETVAL
int
dua_delattr (session, rdn, ...)
ldap_session_t *session
char *rdn
CODE:
{
atlist_t *atlist;
register int i;
atlist = NULL;
for(i=2;i<items;i++)
dua_addpair(&atlist,(char *)SvPV(ST(i), na),"\0");
RETVAL = dua_delattr (session, rdn, atlist);
dua_freelist (atlist);
}
OUTPUT:
RETVAL
void
dua_find (session, rdn, filter, scope, all)
ldap_session_t *session
char *rdn
char *filter
int scope
int all
PREINIT:
atlist_t * atlist;
register atlist_t *temp;
PPCODE:
atlist = (atlist_t *) 0;
dua_find(session,rdn,filter,scope,1,all,&atlist);
temp = atlist;
while (temp != NULL)
{
XPUSHs(sv_2mortal(newSVpv(temp->attr,0)));
XPUSHs(sv_2mortal(newSVpv(temp->value,0)));
temp = temp->next;
}
dua_freelist (atlist);
void
dua_show (session,rdn)
ldap_session_t *session
char *rdn
PREINIT:
atlist_t * atlist;
register atlist_t *temp;
PPCODE:
atlist = (atlist_t *) 0;
dua_find(session,rdn,NULL,0,0,0,&atlist);
temp = atlist;
while (temp != NULL)
{
XPUSHs(sv_2mortal(newSVpv(temp->attr,0)));
XPUSHs(sv_2mortal(newSVpv(temp->value,0)));
temp = temp->next;
}
dua_freelist (atlist);
void
dua_attribute (session,rdn,attr)
ldap_session_t *session
char *rdn
char *attr
PREINIT:
int scope = LDAP_SCOPE_BASE;
char *filter = "objectclass=*";
char attrsonly = 0;
char *attrs[2];
struct berval **values;
char **attribute;
LDAPMessage *result, *entry;
int i;
PPCODE:
attrs[0] = attr;
attrs[1] = NULL;
if (ldap_search_s(session->dua_ld,rdn,scope,filter,attrs,attrsonly,&result)
!= LDAP_SUCCESS) {
ldap_perror(session->dua_ld,"ldap_search_s");
return;
}
if (ldap_count_entries(session->dua_ld,result) != 1) {
session->dua_errstr = "More than one entry returned";
return;
}
if ((entry = ldap_first_entry(session->dua_ld,result)) == NULL) {
session->dua_errstr = ldap_err2string(session->dua_ld->ld_errno);
return;
}
attribute = attrs;
while(*attribute) {
values = ldap_get_values_len(session->dua_ld,entry,*attribute);
for(i = 0; i < ldap_count_values_len(values); i++) {
XPUSHs(sv_2mortal(newSVpv(values[i]->bv_val,values[i]->bv_len)));
}
ldap_value_free_len (values);
attribute++;
}
( run in 1.479 second using v1.01-cache-2.11-cpan-5511b514fd6 )