#include <sys/param.h>
#endif
-#include "ldapconfig.h"
+#include "ldap_defaults.h"
#include "slap.h"
#ifdef LDAP_DEBUG
char *
attr_normalize( char *s )
{
- char *save;
-
assert( s != NULL );
- for ( save = s; *s; s++ ) {
- *s = TOLOWER( (unsigned char) *s );
- }
-
- return( save );
+ return( str2lower( s ) );
}
/*
strcasecmp( argv[lasti], "cis" ) == 0 ) {
at->at_syntax_oid = "1.3.6.1.4.1.1466.115.121.1.15";
at->at_equality_oid = "2.5.13.2";
+ at->at_ordering_oid = "2.5.13.3";
+ at->at_substr_oid = "2.5.13.4";
} else if ( strcasecmp( argv[lasti], "telephone" ) == 0 ||
strcasecmp( argv[lasti], "tel" ) == 0 ) {
at->at_syntax_oid = "1.3.6.1.4.1.1466.115.121.1.50";
at->at_equality_oid = "2.5.13.20";
+ at->at_substr_oid = "2.5.13.21";
} else if ( strcasecmp( argv[lasti], "dn" ) == 0 ) {
at->at_syntax_oid = "1.3.6.1.4.1.1466.115.121.1.12";
at->at_equality_oid = "2.5.13.1";
} else if ( strcasecmp( argv[lasti], "caseexactstring" ) == 0 ||
strcasecmp( argv[lasti], "ces" ) == 0 ) {
at->at_syntax_oid = "1.3.6.1.4.1.1466.115.121.1.15";
- /* notice: this is caseExactIA5Match */
- at->at_equality_oid = "1.3.6.1.4.1.1466.109.114.1";
+ at->at_equality_oid = "2.5.13.5";
+ at->at_ordering_oid = "2.5.13.6";
+ at->at_substr_oid = "2.5.13.7";
} else if ( strcasecmp( argv[lasti], "binary" ) == 0 ||
strcasecmp( argv[lasti], "bin" ) == 0 ) {
at->at_syntax_oid = "1.3.6.1.4.1.1466.115.121.1.5";
}
if ( at->at_syntax_oid ) {
-#if 0
if ( (syn = syn_find(sat->sat_syntax_oid)) ) {
sat->sat_syntax = syn;
} else {
*err = sat->sat_syntax_oid;
return SLAP_SCHERR_SYN_NOT_FOUND;
}
-#endif
if ( !strcmp(at->at_syntax_oid,
"1.3.6.1.4.1.1466.115.121.1.15") ) {
if ( at->at_equality_oid &&
- !strcmp(at->at_equality_oid,
- "1.3.6.1.4.1.1466.109.114.1") ) {
+ !strcmp(at->at_equality_oid, "2.5.13.5") ) {
sat->sat_syntax_compat = SYNTAX_CES;
} else {
sat->sat_syntax_compat = SYNTAX_CIS;
sat->sat_syntax_compat = DEFAULT_SYNTAX;
}
-#if 0
if ( sat->sat_equality_oid ) {
if ( (mr = mr_find(sat->sat_equality_oid)) ) {
sat->sat_equality = mr;
return SLAP_SCHERR_MR_NOT_FOUND;
}
}
-#endif
+
+ /*
+ * Now inherit definitions from superiors. We only check the
+ * direct superior since that one has already inherited from
+ * its own superiorss
+ */
+ if ( sat->sat_sup ) {
+ if ( !sat->sat_syntax ) {
+ sat->sat_syntax = sat->sat_sup->sat_syntax;
+ sat->sat_syntax_len = sat->sat_sup->sat_syntax_len;
+ }
+ if ( !sat->sat_equality ) {
+ sat->sat_equality = sat->sat_sup->sat_equality;
+ }
+ if ( !sat->sat_ordering ) {
+ sat->sat_ordering = sat->sat_sup->sat_ordering;
+ }
+ if ( !sat->sat_substr ) {
+ sat->sat_substr = sat->sat_sup->sat_substr;
+ }
+ }
code = at_insert(sat,err);
return code;
}