summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-09-11 15:42:19 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 15:06:25 -0500
commited2a1c718ae4fb56fdfe73da6f63ddb7fb15d9fd (patch)
treed583b466f1e3fdfe309d4e19077e2cc7deb6a862
parentc44019e1e3d804f577e6432e191fb3d3e93a8f02 (diff)
downloadsamba-ed2a1c718ae4fb56fdfe73da6f63ddb7fb15d9fd.tar.gz
samba-ed2a1c718ae4fb56fdfe73da6f63ddb7fb15d9fd.tar.bz2
samba-ed2a1c718ae4fb56fdfe73da6f63ddb7fb15d9fd.zip
r25081: Add modules_dir member to ldb_context that is used rather than a global
modulesdir setting. Samba always sets this to lp_modulesdir()/ldb (This used to be commit e672380d2156cf0421108a9c34f04f096c2afeed)
-rw-r--r--source4/lib/db_wrap.c3
-rw-r--r--source4/lib/ldb/common/ldb.c1
-rw-r--r--source4/lib/ldb/common/ldb_modules.c23
-rw-r--r--source4/lib/ldb/config.mk9
-rw-r--r--source4/lib/ldb/include/ldb.h13
-rw-r--r--source4/lib/ldb/include/ldb_private.h2
6 files changed, 31 insertions, 20 deletions
diff --git a/source4/lib/db_wrap.c b/source4/lib/db_wrap.c
index 3a8d048221..ad797fe6a0 100644
--- a/source4/lib/db_wrap.c
+++ b/source4/lib/db_wrap.c
@@ -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 */
diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c
index f8085d213a..eb8ff62a0d 100644
--- a/source4/lib/ldb/common/ldb.c
+++ b/source4/lib/ldb/common/ldb.c
@@ -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;
}
diff --git a/source4/lib/ldb/common/ldb_modules.c b/source4/lib/ldb/common/ldb_modules.c
index 2c9fba590a..b279af98f6 100644
--- a/source4/lib/ldb/common/ldb_modules.c
+++ b/source4/lib/ldb/common/ldb_modules.c
@@ -42,6 +42,12 @@
#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);
diff --git a/source4/lib/ldb/config.mk b/source4/lib/ldb/config.mk
index e47bf8ea39..ec74599fd8 100644
--- a/source4/lib/ldb/config.mk
+++ b/source4/lib/ldb/config.mk
@@ -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]
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index 8f693309c5..e4c43b45e7 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -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
diff --git a/source4/lib/ldb/include/ldb_private.h b/source4/lib/ldb/include/ldb_private.h
index cac665b5bb..e07083bef7 100644
--- a/source4/lib/ldb/include/ldb_private.h
+++ b/source4/lib/ldb/include/ldb_private.h
@@ -120,6 +120,8 @@ struct ldb_context {
unsigned int flags;
unsigned int create_perms;
+
+ char *modules_dir;
};
#ifndef ARRAY_SIZE