r25081: Add modules_dir member to ldb_context that is used rather than a global
authorJelmer Vernooij <jelmer@samba.org>
Tue, 11 Sep 2007 15:42:19 +0000 (15:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:06:25 +0000 (15:06 -0500)
modulesdir setting. Samba always sets this to lp_modulesdir()/ldb

source/lib/db_wrap.c
source/lib/ldb/common/ldb.c
source/lib/ldb/common/ldb_modules.c
source/lib/ldb/config.mk
source/lib/ldb/include/ldb.h
source/lib/ldb/include/ldb_private.h

index 3a8d0482216b33c2edae442386a709c55b9378b6..ad797fe6a0dc2ba116367f2c7b7cbdb79404ac99 100644 (file)
@@ -120,6 +120,9 @@ struct ldb_context *ldb_wrap_connect(TALLOC_CTX *mem_ctx,
                return NULL;
        }
 
+       ldb_set_modules_dir(ldb, 
+                           talloc_asprintf(ldb, "%s/ldb", lp_modulesdir()));
+
        /* we want to use the existing event context if possible. This
           relies on the fact that in smbd, everything is a child of
           the main event_context */
index f8085d213a0abebb534b884a0d23f5ae4cffb00c..eb8ff62a0db0f8d6c2b19f1231c9416f988c763c 100644 (file)
@@ -51,6 +51,7 @@ struct ldb_context *ldb_init(void *mem_ctx)
 
        ldb_set_utf8_default(ldb);
        ldb_set_create_perms(ldb, 0666);
+       ldb_set_modules_dir(ldb, LDB_MODULESDIR);
 
        return ldb;
 }
index 2c9fba590a4b4f5d1cf52f425fa75554a7d11aa3..b279af98f684db834d3fed65ae2876d3f485d6a3 100644 (file)
 #define LDB_MODULE_PREFIX      "modules:"
 #define LDB_MODULE_PREFIX_LEN  8
 
+void ldb_set_modules_dir(struct ldb_context *ldb, const char *path)
+{
+       talloc_free(ldb->modules_dir);
+       ldb->modules_dir = talloc_strdup(ldb, path);
+}
+
 static char *ldb_modules_strdup_no_spaces(TALLOC_CTX *mem_ctx, const char *string)
 {
        int i, len;
@@ -203,21 +209,12 @@ int ldb_try_load_dso(struct ldb_context *ldb, const char *name)
        char *path;
        void *handle;
        int (*init_fn) (void);
-       char *modulesdir;
 
-       if (getenv("LD_LDB_MODULE_PATH") != NULL) {
-               modulesdir = talloc_strdup(ldb, getenv("LD_LDB_MODULE_PATH"));
-       } else {
-#ifdef _SAMBA_BUILD_
-               modulesdir = talloc_asprintf(ldb, "%s/ldb", dyn_MODULESDIR);
-#else
-               modulesdir = talloc_strdup(ldb, MODULESDIR);
-#endif
-       }
-
-       path = talloc_asprintf(ldb, "%s/%s.%s", modulesdir, name, SHLIBEXT);
+       if (ldb->modules_dir == NULL)
+               return -1;
 
-       talloc_free(modulesdir);
+       path = talloc_asprintf(ldb, "%s/%s.%s", ldb->modules_dir, name, 
+                              SHLIBEXT);
 
        ldb_debug(ldb, LDB_DEBUG_TRACE, "trying to load %s from %s\n", name, path);
 
index e47bf8ea39b4241f07554be568c1f5521e0ebbe8..ec74599fd81cf554bf9ea2f0a6b2fd0d9b5f1230 100644 (file)
@@ -142,9 +142,16 @@ PRIVATE_DEPENDENCIES = \
 ./lib/ldb/common/ldb_modules.o: lib/ldb/common/ldb_modules.c Makefile
        @echo Compiling $<
        @$(CC) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $(PICFLAG) \
-       -DLDBMODULESDIR=\"$(MODULESDIR)/ldb\" -DSHLIBEXT=\"$(SHLIBEXT)\" \
+       -DSHLIBEXT=\"$(SHLIBEXT)\" \
        -c $< -o $@
 
+./lib/ldb/common/ldb.o: lib/ldb/common/ldb.c Makefile
+       @echo Compiling $<
+       @$(CC) `$(PERL) $(srcdir)/script/cflags.pl $@` $(CFLAGS) $(PICFLAG) \
+       -DLDB_MODULESDIR=\"$(MODULESDIR)/ldb\" \
+       -c $< -o $@
+
+
 ################################################
 # Start SUBSYSTEM ldb
 [LIBRARY::LIBLDB]
index 8f693309c5e4aebe6eaa2d81fb3982ef1b984590..e4c43b45e741de23e5fea3761bf68824fa464556 100644 (file)
@@ -779,6 +779,7 @@ int ldb_wait(struct ldb_handle *handle, enum ldb_wait_type type);
 int ldb_set_timeout(struct ldb_context *ldb, struct ldb_request *req, int timeout);
 int ldb_set_timeout_from_prev_req(struct ldb_context *ldb, struct ldb_request *oldreq, struct ldb_request *newreq);
 void ldb_set_create_perms(struct ldb_context *ldb, unsigned int perms);
+void ldb_set_modules_dir(struct ldb_context *ldb, const char *path);
 
 /**
   Initialise ldbs' global information
@@ -876,7 +877,7 @@ int ldb_search_default_callback(struct ldb_context *ldb, void *context, struct l
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param base the Base Distinguished Name for the query (use ldb_dn_new() for an empty one)
   \param scope the search scope for the query
   \param expression the search expression to use for this query
@@ -904,7 +905,7 @@ int ldb_build_search_req(struct ldb_request **ret_req,
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param message contains the entry to be added 
   \param controls an array of controls
   \param context the callback function context
@@ -926,7 +927,7 @@ int ldb_build_add_req(struct ldb_request **ret_req,
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param message contains the entry to be modified
   \param controls an array of controls
   \param context the callback function context
@@ -948,7 +949,7 @@ int ldb_build_mod_req(struct ldb_request **ret_req,
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param dn the DN to be deleted
   \param controls an array of controls
   \param context the callback function context
@@ -970,7 +971,7 @@ int ldb_build_del_req(struct ldb_request **ret_req,
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param olddn the old DN
   \param newdn the new DN
   \param controls an array of controls
@@ -1137,7 +1138,7 @@ int ldb_extended_default_callback(struct ldb_context *ldb, void *context, struct
 
   \param ret_req the request structure is returned here (talloced on mem_ctx)
   \param ldb the context associated with the database (from ldb_init())
-  \param mem_ctx a talloc emmory context (used as parent of ret_req)
+  \param mem_ctx a talloc memory context (used as parent of ret_req)
   \param oid the OID of the extended operation.
   \param data a void pointer a the extended operation specific parameters,
   it needs to be NULL or a valid talloc pointer! talloc_get_type() will be used on it  
index cac665b5bbd58294b0ecadb3e9da1e213bcee71b..e07083bef75494f8ca0986aa6d91d1ee3fd1b4c0 100644 (file)
@@ -120,6 +120,8 @@ struct ldb_context {
        unsigned int flags;
 
        unsigned int create_perms;
+
+       char *modules_dir;
 };
 
 #ifndef ARRAY_SIZE