]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
Add OpenLDAP RCSid
[openldap] / servers / slapd / config.c
index c0bc3fd69d82a562301cdd40562741d8d40a0dd7..493045cdf2dfe24ad6494fe0a107b042170c8613 100644 (file)
@@ -1,4 +1,9 @@
 /* config.c - configuration file handling routines */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
 #include "portable.h"
 
@@ -11,7 +16,7 @@
 #include <ac/ctype.h>
 #include <ac/socket.h>
 
-#include "ldap_defaults.h"
+#include "ldap_pvt.h"
 #include "slap.h"
 
 #define MAXARGS        100
@@ -23,6 +28,7 @@ int           defsize = SLAPD_DEFAULT_SIZELIMIT;
 int            deftime = SLAPD_DEFAULT_TIMELIMIT;
 AccessControl  *global_acl = NULL;
 int            global_default_access = ACL_READ;
+int            global_readonly = 0;
 char           *replogfile;
 int            global_lastmod = ON;
 int            global_idletimeout = 0;
@@ -39,7 +45,7 @@ static int    fp_parse_line(char *line, int *argcp, char **argv);
 static char    *strtok_quote(char *line, char *sep);
 
 int
-read_config( char *fname )
+read_config( const char *fname )
 {
        FILE    *fp;
        char    *line, *savefname, *saveline;
@@ -128,9 +134,6 @@ read_config( char *fname )
                        bi = NULL;
                        be = backend_db_init( cargv[1] );
 
-               /* assign a default depth limit for alias deref */
-               be->be_max_deref_depth = SLAPD_DEFAULT_MAXDEREFDEPTH; 
-
                /* get pid file name */
                } else if ( strcasecmp( cargv[0], "pidfile" ) == 0 ) {
                        if ( cargc < 2 ) {
@@ -231,7 +234,7 @@ read_config( char *fname )
                                char *dn = ch_strdup( cargv[1] );
                                (void) dn_normalize( dn );
                                charray_add( &be->be_suffix, dn );
-                               (void) str2upper( dn );
+                               (void) ldap_pvt_str2upper( dn );
                                charray_add( &be->be_nsuffix, dn );
                                free( dn );
                        }
@@ -364,9 +367,7 @@ read_config( char *fname )
                                return( 1 );
                        }
                        if ( be == NULL ) {
-                               Debug( LDAP_DEBUG_ANY,
-"%s: line %d: readonly line must appear inside a database definition (ignored)\n",
-                                   fname, lineno, 0 );
+                               global_readonly = (strcasecmp( cargv[1], "on" ) == 0);
                        } else {
                                if ( strcasecmp( cargv[1], "on" ) == 0 ) {
                                        be->be_readonly = 1;
@@ -417,12 +418,15 @@ read_config( char *fname )
                               fname, lineno, 0 );
                        return( 1 );
 #endif
+               /* specify an Object Identifier macro */
+               } else if ( strcasecmp( cargv[0], "objectidentifier" ) == 0 ) {
+                       parse_oidm( fname, lineno, cargc, cargv );
                /* specify an objectclass */
                } else if ( strcasecmp( cargv[0], "objectclass" ) == 0 ) {
                        if ( *cargv[1] == '(' ) {
                                char * p;
                                p = strchr(saveline,'(');
-                               parse_oc( fname, lineno, p );
+                               parse_oc( fname, lineno, p, cargv );
                        } else {
                                parse_oc_old( be, fname, lineno, cargc, cargv );
                        }
@@ -432,7 +436,7 @@ read_config( char *fname )
                        if ( *cargv[1] == '(' ) {
                                char * p;
                                p = strchr(saveline,'(');
-                               parse_at( fname, lineno, p );
+                               parse_at( fname, lineno, p, cargv );
                        } else {
                                attr_syntax_config( fname, lineno, cargc - 1,
                                    &cargv[1] );
@@ -650,19 +654,32 @@ read_config( char *fname )
                        ldap_srvtab = ch_strdup( cargv[1] );
 
 #ifdef SLAPD_MODULES
-                } else if (strcasecmp( cargv[0], "loadmodule") == 0 ) {
+                } else if (strcasecmp( cargv[0], "moduleload") == 0 ) {
                    if ( cargc < 2 ) {
                       Debug( LDAP_DEBUG_ANY,
-                             "%s: line %d: missing filename in \"loadmodule <filename>\" line\n",
+                             "%s: line %d: missing filename in \"moduleload <filename>\" line\n",
                              fname, lineno, 0 );
                       exit( EXIT_FAILURE );
                    }
-                   if (!load_module(cargv[1], cargc - 2, (cargc > 2) ? cargv + 2 : NULL)) {
+                   if (module_load(cargv[1], cargc - 2, (cargc > 2) ? cargv + 2 : NULL)) {
                       Debug( LDAP_DEBUG_ANY,
                              "%s: line %d: failed to load or initialize module %s\n",
                              fname, lineno, cargv[1]);
                       exit( EXIT_FAILURE );
                    }
+                } else if (strcasecmp( cargv[0], "modulepath") == 0 ) {
+                   if ( cargc != 2 ) {
+                      Debug( LDAP_DEBUG_ANY,
+                             "%s: line %d: missing path in \"modulepath <path>\" line\n",
+                             fname, lineno, 0 );
+                      exit( EXIT_FAILURE );
+                   }
+                   if (module_path( cargv[1] )) {
+                      Debug( LDAP_DEBUG_ANY,
+                             "%s: line %d: failed to set module search path to %s\n",
+                             fname, lineno, cargv[1]);
+                      exit( EXIT_FAILURE );
+                   }
                   
 #endif /*SLAPD_MODULES*/