/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2006 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
}
static char *strchrlen(
- const char *p,
+ const char *beg,
const char *end,
const char ch,
int *len )
{
- int i;
+ const char *p;
- for( i=0; *p && p < end; i++,p++ ) {
+ for( p=beg; *p && p < end; p++ ) {
if( *p == ch ) {
- *len = i;
+ *len = p - beg;
return (char *) p;
}
}
- *len = i;
+ *len = p - beg;
return NULL;
}
}
/* find valid base attribute type; parse in place */
- memset( &desc, 0, sizeof( desc ) );
desc.ad_cname = *bv;
+ desc.ad_flags = 0;
+ BER_BVZERO( &desc.ad_tags );
name = bv->bv_val;
options = ber_bvchr( bv, ';' );
if ( options != NULL && (unsigned) ( options - name ) < bv->bv_len ) {
* parse options in place
*/
ntags = 0;
- memset( tags, 0, sizeof( tags ));
tagslen = 0;
optn = bv->bv_val + bv->bv_len;
return LDAP_SUCCESS;
}
+AttributeDescription *
+slap_bv2tmp_ad(
+ struct berval *bv,
+ void *memctx )
+{
+ AttributeDescription *ad =
+ slap_sl_mfuncs.bmf_malloc( sizeof(AttributeDescription) +
+ bv->bv_len + 1, memctx );
+
+ ad->ad_cname.bv_val = (char *)(ad+1);
+ strncpy( ad->ad_cname.bv_val, bv->bv_val, bv->bv_len+1 );
+ ad->ad_cname.bv_len = bv->bv_len;
+ ad->ad_flags = SLAP_DESC_TEMPORARY;
+ ad->ad_type = slap_schema.si_at_undefined;
+
+ return ad;
+}
+
static int
undef_promote(
AttributeType *at,