]> git.sur5r.net Git - openldap/commitdiff
Add "modulepath" config statement for setting the search path for locating
authorHoward Chu <hyc@openldap.org>
Tue, 17 Aug 1999 01:30:09 +0000 (01:30 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 17 Aug 1999 01:30:09 +0000 (01:30 +0000)
loadable modules. Gratuitously renamed "loadmodule" to "moduleload".
"modulepath" takes a single argument, a colon-separated list of absolute
pathnames.

servers/slapd/config.c
servers/slapd/module.c

index 47b081a2860b1d172716fb1f8f403ef79f7824fb..a4e566b49f19d97d44b28c469304e988c39ee0f4 100644 (file)
@@ -654,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*/
 
index 1a29c2ccd2d6f01bafe0bf3320d9f7eb71bf92a8..3768f38b7cf52aab7f04efc1a9b3144e8ea1909f 100644 (file)
@@ -6,7 +6,7 @@
 
 #include <ltdl.h>
 
-int load_module(const char* file_name, int argc, char *argv[]) {
+int module_load(const char* file_name, int argc, char *argv[]) {
     lt_dlhandle* module = NULL;
     int (*initialize) LDAP_P((int argc, char *argv[]));
 
@@ -31,5 +31,14 @@ int load_module(const char* file_name, int argc, char *argv[]) {
     return -1;
 }
 
+int module_path(const char *path) {
+
+    if (lt_dlinit()) {
+       Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", lt_dlerror(), 0, 0);
+       return -1;
+    }
+
+    return lt_dlsetsearchpath( path );
+}
 #endif /* SLAPD_MODULES */