static int
syn_index_cmp(
- struct sindexrec *sir1,
- struct sindexrec *sir2
+ const void *v_sir1,
+ const void *v_sir2
)
{
+ const struct sindexrec *sir1 = v_sir1, *sir2 = v_sir2;
return (strcmp( sir1->sir_name, sir2->sir_name ));
}
static int
syn_index_name_cmp(
- const char *name,
- struct sindexrec *sir
+ const void *name,
+ const void *sir
)
{
- return (strcmp( name, sir->sir_name ));
+ return (strcmp( name, ((const struct sindexrec *)sir)->sir_name ));
}
Syntax *
{
struct sindexrec *sir = NULL;
- if ( (sir = (struct sindexrec *) avl_find( syn_index, synname,
- (AVL_CMP) syn_index_name_cmp )) != NULL ) {
+ if ( (sir = avl_find( syn_index, synname, syn_index_name_cmp )) != NULL ) {
return( sir->sir_syn );
}
return( NULL );
if ( ssyn->ssyn_oid ) {
sir = (struct sindexrec *)
- ch_calloc( 1, sizeof(struct sindexrec) );
+ SLAP_CALLOC( 1, sizeof(struct sindexrec) );
+ if( sir == NULL ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( OPERATION, ERR,
+ "syn_insert: SLAP_CALLOC Error\n", 0, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_ANY, "SLAP_CALLOC Error\n", 0, 0, 0 );
+#endif
+ return LDAP_OTHER;
+ }
sir->sir_name = ssyn->ssyn_oid;
sir->sir_syn = ssyn;
if ( avl_insert( &syn_index, (caddr_t) sir,
- (AVL_CMP) syn_index_cmp,
- (AVL_DUP) avl_dup_error ) ) {
+ syn_index_cmp, avl_dup_error ) ) {
*err = ssyn->ssyn_oid;
ldap_memfree(sir);
return SLAP_SCHERR_SYN_DUP;
int
syn_add(
LDAPSyntax *syn,
- unsigned flags,
- slap_syntax_validate_func *validate,
- slap_syntax_transform_func *normalize,
- slap_syntax_transform_func *pretty,
-#ifdef SLAPD_BINARY_CONVERSION
- slap_syntax_transform_func *ber2str,
- slap_syntax_transform_func *str2ber,
-#endif
+ slap_syntax_defs_rec *def,
const char **err
)
{
Syntax *ssyn;
int code;
- ssyn = (Syntax *) ch_calloc( 1, sizeof(Syntax) );
+ ssyn = (Syntax *) SLAP_CALLOC( 1, sizeof(Syntax) );
+ if( ssyn == NULL ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( OPERATION, ERR,
+ "syn_add: SLAP_CALLOC Error\n", 0, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_ANY, "SLAP_CALLOC Error\n", 0, 0, 0 );
+#endif
+ return LDAP_OTHER;
+ }
AC_MEMCPY( &ssyn->ssyn_syn, syn, sizeof(LDAPSyntax) );
ssyn->ssyn_next = NULL;
+ /*
+ * note: ssyn_bvoid uses the same memory of ssyn_syn.syn_oid;
+ * ssyn_oidlen is #defined as ssyn_bvoid.bv_len
+ */
+ ssyn->ssyn_bvoid.bv_val = ssyn->ssyn_syn.syn_oid;
ssyn->ssyn_oidlen = strlen(syn->syn_oid);
- ssyn->ssyn_flags = flags;
- ssyn->ssyn_validate = validate;
- ssyn->ssyn_normalize = normalize;
- ssyn->ssyn_pretty = pretty;
+ ssyn->ssyn_flags = def->sd_flags;
+ ssyn->ssyn_validate = def->sd_validate;
+ ssyn->ssyn_normalize = def->sd_normalize;
+ ssyn->ssyn_pretty = def->sd_pretty;
#ifdef SLAPD_BINARY_CONVERSION
- ssyn->ssyn_ber2str = ber2str;
- ssyn->ssyn_str2ber = str2ber;
+ ssyn->ssyn_ber2str = def->sd_ber2str;
+ ssyn->ssyn_str2ber = def->sd_str2ber;
#endif
code = syn_insert(ssyn, err);
int
register_syntax(
- const char * desc,
- unsigned flags,
- slap_syntax_validate_func *validate,
- slap_syntax_transform_func *normalize,
- slap_syntax_transform_func *pretty )
+ slap_syntax_defs_rec *def )
{
LDAPSyntax *syn;
int code;
const char *err;
- syn = ldap_str2syntax( desc, &code, &err, LDAP_SCHEMA_ALLOW_ALL);
+ syn = ldap_str2syntax( def->sd_desc, &code, &err, LDAP_SCHEMA_ALLOW_ALL);
if ( !syn ) {
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ERR,
"register_syntax: Error - %s before %s in %s.\n",
- ldap_scherr2str(code), err, desc );
+ ldap_scherr2str(code), err, def->sd_desc );
#else
Debug( LDAP_DEBUG_ANY, "Error in register_syntax: %s before %s in %s\n",
- ldap_scherr2str(code), err, desc );
+ ldap_scherr2str(code), err, def->sd_desc );
#endif
return( -1 );
}
- code = syn_add( syn, flags, validate, normalize, pretty, &err );
+ code = syn_add( syn, def, &err );
ldap_memfree( syn );
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, ERR,
"register_syntax: Error - %s %s in %s\n",
- scherr2str(code), err, desc );
+ scherr2str(code), err, def->sd_desc );
#else
Debug( LDAP_DEBUG_ANY, "Error in register_syntax: %s %s in %s\n",
- scherr2str(code), err, desc );
+ scherr2str(code), err, def->sd_desc );
#endif
return( -1 );
return( 0 );
}
-#if defined( SLAPD_SCHEMA_DN )
-
int
syn_schema_info( Entry *e )
{
#endif
#endif
- attr_merge( e, ad_ldapSyntaxes, vals );
+ if( attr_merge( e, ad_ldapSyntaxes, vals ) )
+ return -1;
ldap_memfree( vals[0].bv_val );
}
return 0;
}
-#endif