]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/schemaparse.c
Add multimaster replication support (ITS#170) based upon
[openldap] / servers / slapd / schemaparse.c
index e68d0dcaec9e68c16468ed85790bf03e48663ebc..42aa19d83557391bd6efd384a09beaa513ab68a0 100644 (file)
@@ -23,7 +23,14 @@ static char *err2text[] = {
        "Objectclass not found",
        "Attribute type not found",
        "Duplicate objectclass",
-       "Duplicate attributetype"
+       "Duplicate attributetype",
+       "Duplicate syntax",
+       "Duplicate matchingrule",
+       "OID or name required",
+       "Syntax or superior required",
+       "Matchingrule not found",
+       "Syntax not found",
+       "Syntax required"
 };
 
 char *
@@ -49,13 +56,16 @@ parse_oc_old(
        char            last;
        LDAP_OBJECT_CLASS       *oc;
        int             code;
-       char            *err;
+       const char      *err;
        char            **namep;
 
        oc = (LDAP_OBJECT_CLASS *) ch_calloc( 1, sizeof(LDAP_OBJECT_CLASS) );
        oc->oc_names = ch_calloc( 2, sizeof(char *) );
        oc->oc_names[0] = ch_strdup( argv[1] );
        oc->oc_names[1] = NULL;
+       if ( strcasecmp( oc->oc_names[0], "top" ) ) {
+               oc->oc_kind = LDAP_SCHEMA_STRUCTURAL;
+       }
        for ( i = 2; i < argc; i++ ) {
                /* required attributes */
                if ( strcasecmp( argv[i], "requires" ) == 0 ) {
@@ -103,7 +113,7 @@ parse_oc_old(
                        if ( code ) {
                                fprintf( stderr, "%s: line %d: %s %s\n",
                                         fname, lineno, scherr2str(code), *namep);
-                               exit( 1 );
+                               exit( EXIT_FAILURE );
                        }
                        namep++;
                }
@@ -115,7 +125,7 @@ parse_oc_old(
                        if ( code ) {
                                fprintf( stderr, "%s: line %d: %s %s\n",
                                         fname, lineno, scherr2str(code), *namep);
-                               exit( 1 );
+                               exit( EXIT_FAILURE );
                        }
                        namep++;
                }
@@ -125,7 +135,7 @@ parse_oc_old(
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s %s\n",
                         fname, lineno, scherr2str(code), err);
-               exit( 1 );
+               exit( EXIT_FAILURE );
        }
        ldap_memfree(oc);
 }
@@ -139,7 +149,7 @@ parse_oc(
 {
        LDAP_OBJECT_CLASS *oc;
        int             code;
-       char            *err;
+       const char      *err;
 
        oc = ldap_str2objectclass(line,&code,&err);
        if ( !oc ) {
@@ -151,7 +161,7 @@ parse_oc(
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s %s\n",
                         fname, lineno, scherr2str(code), err);
-               exit( 1 );
+               exit( EXIT_FAILURE );
        }
        ldap_memfree(oc);
 }
@@ -170,7 +180,7 @@ oc_usage( void )
        fprintf( stderr, "  [ \"MUST\" oids ]      ; AttributeTypes\n");
        fprintf( stderr, "  [ \"MAY\" oids ]       ; AttributeTypes\n");
        fprintf( stderr, "whsp \")\"\n");
-       exit( 1 );
+       exit( EXIT_FAILURE );
 }
 
 static void
@@ -179,7 +189,7 @@ oc_usage_old( void )
        fprintf( stderr, "<oc clause> ::= objectclass <ocname>\n" );
        fprintf( stderr, "                [ requires <attrlist> ]\n" );
        fprintf( stderr, "                [ allows <attrlist> ]\n" );
-       exit( 1 );
+       exit( EXIT_FAILURE );
 }
 
 static void
@@ -205,7 +215,7 @@ at_usage( void )
        fprintf( stderr, "                                 ; distributedOperation\n");
        fprintf( stderr, "                                 ; dSAOperation\n");
        fprintf( stderr, "whsp \")\"\n");
-       exit( 1 );
+       exit( EXIT_FAILURE );
 }
 
 void
@@ -217,7 +227,7 @@ parse_at(
 {
        LDAP_ATTRIBUTE_TYPE *at;
        int             code;
-       char            *err;
+       const char      *err;
 
        at = ldap_str2attributetype(line,&code,&err);
        if ( !at ) {
@@ -229,7 +239,7 @@ parse_at(
        if ( code ) {
                fprintf( stderr, "%s: line %d: %s %s\n",
                         fname, lineno, scherr2str(code), err);
-               exit( 1 );
+               exit( EXIT_FAILURE );
        }
        ldap_memfree(at);
 }