]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/schema.c
Add ldap_*2name() in <include,libldap>/schema, use them in slapd/schema
[openldap] / servers / slapd / schema.c
index c7bafd9b8a51b2e5f068915c6b5c2d4901ca7f54..ad022a60bbfa062a185d49523edc49e0a59850a2 100644 (file)
@@ -1,4 +1,8 @@
 /* schema.c - routines to enforce schema definitions */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
 #include "portable.h"
 
@@ -1006,7 +1010,7 @@ schema_init( void )
                if ( res ) {
                        fprintf( stderr, "schema_init: Error registering syntax %s\n",
                                 syntax_defs[i].sd_desc );
-                       exit( 1 );
+                       exit( EXIT_FAILURE );
                }
        }
        for ( i=0; mrule_defs[i].mrd_desc != NULL; i++ ) {
@@ -1018,7 +1022,7 @@ schema_init( void )
                if ( res ) {
                        fprintf( stderr, "schema_init: Error registering matching rule %s\n",
                                 mrule_defs[i].mrd_desc );
-                       exit( 1 );
+                       exit( EXIT_FAILURE );
                }
        }
        schema_init_done = 1;
@@ -1159,6 +1163,10 @@ schema_info( Connection *conn, Operation *op, char **attrs, int attrsonly )
        val.bv_len = sizeof("top")-1;
        attr_merge( e, "objectClass", vals );
 
+       val.bv_val = "LDAPsubentry";
+       val.bv_len = sizeof("LDAPsubentry")-1;
+       attr_merge( e, "objectClass", vals );
+
        val.bv_val = "subschema";
        val.bv_len = sizeof("subschema")-1;
        attr_merge( e, "objectClass", vals );
@@ -1182,24 +1190,21 @@ static void
 oc_print( ObjectClass *oc )
 {
        int     i;
+       const char *mid;
 
-       if ( oc->soc_names && oc->soc_names[0] ) {
-               printf( "objectclass %s\n", oc->soc_names[0] );
-       } else {
-               printf( "objectclass %s\n", oc->soc_oid );
-       }
+       printf( "objectclass %s\n", ldap_objectclass2name( &oc->soc_oclass ) );
        if ( oc->soc_required != NULL ) {
-               printf( "\trequires %s", oc->soc_required[0] );
-               for ( i = 1; oc->soc_required[i] != NULL; i++ ) {
-                       printf( ",%s", oc->soc_required[i] );
-               }
+               mid = "\trequires ";
+               for ( i = 0; oc->soc_required[i] != NULL; i++, mid = "," )
+                       printf( "%s%s", mid,
+                               ldap_attributetype2name( &oc->soc_required[i]->sat_atype ) );
                printf( "\n" );
        }
        if ( oc->soc_allowed != NULL ) {
-               printf( "\tallows %s", oc->soc_allowed[0] );
-               for ( i = 1; oc->soc_allowed[i] != NULL; i++ ) {
-                       printf( ",%s", oc->soc_allowed[i] );
-               }
+               mid = "\tallows ";
+               for ( i = 0; oc->soc_allowed[i] != NULL; i++, mid = "," )
+                       printf( "%s%s", mid,
+                               ldap_attributetype2name( &oc->soc_allowed[i]->sat_atype ) );
                printf( "\n" );
        }
 }