static void oc_usage(void);
static void at_usage(void);
-static char *const err2text[SLAP_SCHERR_LAST+1] = {
+static char *const err2text[] = {
"Success",
"Out of memory",
"ObjectClass not found",
- "ObjectClass inappropriate SUPerior",
+ "user-defined ObjectClass includes operational attributes",
+ "user-defined ObjectClass has inappropriate SUPerior",
+ "Duplicate objectClass",
"AttributeType not found",
+ "AttributeType inappropriate matching rule",
"AttributeType inappropriate USAGE",
- "Duplicate objectClass",
+ "AttributeType inappropriate SUPerior",
+ "AttributeType SYNTAX or SUPerior required",
"Duplicate attributeType",
- "Duplicate ldapSyntax",
- "Duplicate matchingRule",
- "OID or name required",
- "SYNTAX or SUPerior required",
"MatchingRule not found",
+ "MatchingRule incomplete",
+ "Duplicate matchingRule",
"Syntax not found",
- "Syntax required",
+ "Duplicate ldapSyntax",
+ "OID or name required",
"Qualifier not supported",
"Invalid NAME",
"OID could not be expanded"
char *
scherr2str(int code)
{
- if ( code < 0 || code >= (sizeof(err2text)/sizeof(char *)) ) {
+ if ( code < 0 || SLAP_SCHERR_LAST <= code ) {
return "Unknown error";
} else {
return err2text[code];
LDAPObjectClass *oc;
int code;
const char *err;
- char *oid = NULL;
- oc = ldap_str2objectclass(line,&code,&err,LDAP_SCHEMA_ALLOW_ALL);
+ oc = ldap_str2objectclass(line, &code, &err, LDAP_SCHEMA_ALLOW_ALL );
if ( !oc ) {
fprintf( stderr, "%s: line %d: %s before %s\n",
fname, lineno, ldap_scherr2str(code), err );
return 1;
}
- if ( !OID_LEADCHAR( oc->oc_oid[0] )) {
- /* Expand OID macros */
- oid = oidm_find( oc->oc_oid );
- if ( !oid ) {
- fprintf( stderr,
- "%s: line %d: OID %s not recognized\n",
- fname, lineno, oc->oc_oid);
- return 1;
- }
- if ( oid != oc->oc_oid ) {
- ldap_memfree( oc->oc_oid );
- oc->oc_oid = oid;
- }
- }
-
- code = oc_add(oc,&err);
+ code = oc_add(oc,1,&err);
if ( code ) {
fprintf( stderr, "%s: line %d: %s: \"%s\"\n",
fname, lineno, scherr2str(code), err);
LDAPAttributeType *at;
int code;
const char *err;
- char *oid = NULL;
at = ldap_str2attributetype( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL );
if ( !at ) {
return 1;
}
-#if 0
/* operational attributes should be defined internally */
if ( at->at_usage ) {
fprintf( stderr, "%s: line %d: attribute type \"%s\" is operational\n",
fname, lineno, at->at_oid );
return 1;
}
-#endif
code = at_add(at,&err);
if ( code ) {