static ConfigTable constraintcfg[] = {
{ "constraint_attribute", "attribute regex <regular expression>",
4, 4, 0, ARG_MAGIC | CONSTRAINT_ATTRIBUTE, constraint_cf_gen,
- "( HPcfgOvAt:4.1 NAME 'olcConstraintAttribute' "
+ "( OLcfgOvAt:13.1 NAME 'olcConstraintAttribute' "
"DESC 'regular expression constraint for attribute' "
+ "EQUALITY caseIgnoreMatch "
"SYNTAX OMsDirectoryString )", NULL, NULL },
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
};
static ConfigOCs constraintocs[] = {
- { "( HPcfgOvOc:4.1 "
+ { "( OLcfgOvOc:13.1 "
"NAME 'olcConstraintConfig' "
"DESC 'Constraint overlay configuration' "
"SUP olcOverlayConfig "
struct berval bv;
int i, rc = 0;
constraint ap = { NULL, NULL, NULL }, *a2 = NULL;
- regmatch_t rm[2];
const char *text = NULL;
switch ( c->op ) {
on->on_bi.bi_private = NULL;
} else {
- constraint *cpp;
+ constraint **cpp;
/* zap constraint numbered 'valx' */
- for(i=0, cp = cn, cpp = NULL;
+ for(i=0, cp = cn, cpp = &cn;
(cp) && (i<c->valx);
- i++, cpp = cp, cp=cp->ap_next);
+ i++, cpp = &cp->ap_next, cp = *cpp);
- if (cpp) {
+ if (cp) {
/* zap cp, and join cpp to cp->ap_next */
- cpp->ap_next = cp->ap_next;
+ *cpp = cp->ap_next;
if (cp->re) {
regfree(cp->re);
ch_free(cp->re);
}
if (cp->re_str) ch_free(cp->re_str);
ch_free(cp);
- } else {
- /* zap the list head */
- if (cn->re) {
- regfree(cn->re);
- ch_free(cn->re);
- }
- if (cn->re_str) ch_free(cn->re_str);
- ch_free(cn);
- on->on_bi.bi_private = cn->ap_next;
}
+ on->on_bi.bi_private = cn;
}
break;
switch (c->type) {
case CONSTRAINT_ATTRIBUTE:
if ( slap_str2ad( c->argv[1], &ap.ap, &text ) ) {
- Debug( LDAP_DEBUG_CONFIG,
- "constraint_add: <%s>: attribute description unknown %s.\n",
- c->argv[1], text, 0 );
+ snprintf( c->cr_msg, sizeof( c->cr_msg ),
+ "%s <%s>: %s\n", c->argv[0], c->argv[1], text );
+ Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE,
+ "%s: %s\n", c->log, c->cr_msg, 0 );
return( ARG_BAD_CONF );
}
regerror( err, ap.re, errmsg, sizeof(errmsg) );
ch_free(ap.re);
- Debug( LDAP_DEBUG_CONFIG,
- "%s: Illegal regular expression \"%s\": Error %s\n",
- c->argv[1], c->argv[3], errmsg);
+ snprintf( c->cr_msg, sizeof( c->cr_msg ),
+ "%s %s: Illegal regular expression \"%s\": Error %s",
+ c->argv[0], c->argv[1], c->argv[3], errmsg);
+ Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE,
+ "%s: %s\n", c->log, c->cr_msg, 0 );
ap.re = NULL;
return( ARG_BAD_CONF );
}
ap.re_str = ch_strdup( c->argv[3] );
} else {
- Debug( LDAP_DEBUG_CONFIG,
- "%s: Unknown constraint type: %s\n",
- c->argv[1], c->argv[2], 0 );
+ snprintf( c->cr_msg, sizeof( c->cr_msg ),
+ "%s %s: Unknown constraint type: %s",
+ c->argv[0], c->argv[1], c->argv[2] );
+ Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE,
+ "%s: %s\n", c->log, c->cr_msg, 0 );
return ( ARG_BAD_CONF );
}
}
static char *
-print_message( const char *fmt, AttributeDescription *a )
+print_message( const char *errtext, AttributeDescription *a )
{
char *ret;
int sz;
- sz = strlen(fmt) + a->ad_cname.bv_len + 1;
+ sz = strlen(errtext) + sizeof(" on ") + a->ad_cname.bv_len;
ret = ch_malloc(sz);
- snprintf( ret, sz, fmt, a->ad_cname.bv_val );
+ snprintf( ret, sz, "%s on %s", errtext, a->ad_cname.bv_val );
return ret;
}
constraint *c = on->on_bi.bi_private, *cp;
BerVarray b = NULL;
int i;
- const char *rsv = "add breaks regular expression constraint on %s";
+ const char *rsv = "add breaks regular expression constraint";
char *msg;
if ((a = op->ora_e->e_attrs) == NULL) {
Modifications *m;
BerVarray b = NULL;
int i;
- const char *rsv = "modify breaks regular expression constraint on %s";
+ const char *rsv = "modify breaks regular expression constraint";
char *msg;
if ((m = op->orm_modlist) == NULL) {
static int
constraint_close(
- BackendDB *be
- )
+ BackendDB *be,
+ ConfigReply *cr )
{
slap_overinst *on = (slap_overinst *) be->bd_info;
constraint *ap, *a2;