lib/util: consolidate module loading into common code
[samba.git] / source4 / param / share.c
index d0a570eeca78f71a0589785fd5d9162ca5436e55..da0470d5606c5924bd2c34e95ce4e7ce60dd3eae 100644 (file)
@@ -1,7 +1,7 @@
 /* 
    Unix SMB/CIFS implementation.
    
-   Modular services configuration system
+   Modular shares configuration system
    
    Copyright (C) Simo Sorce    2006
    
@@ -21,8 +21,8 @@
 
 #include "includes.h"
 #include "param/share.h"
-#include "build.h"
 #include "param/param.h"
+#include "lib/util/samba_modules.h"
 
 const char *share_string_option(struct share_config *scfg, const char *opt_name, const char *defval)
 {
@@ -34,7 +34,7 @@ int share_int_option(struct share_config *scfg, const char *opt_name, int defval
        return scfg->ctx->ops->int_option(scfg, opt_name, defval);
 }
 
-BOOL share_bool_option(struct share_config *scfg, const char *opt_name, BOOL defval)
+bool share_bool_option(struct share_config *scfg, const char *opt_name, bool defval)
 {
        return scfg->ctx->ops->bool_option(scfg, opt_name, defval);
 }
@@ -126,24 +126,20 @@ NTSTATUS share_register(const struct share_ops *ops)
        return NT_STATUS_OK;
 }
 
-NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, 
-                                                                  const char *backend_name,
-                                                                  struct share_context **ctx)
+NTSTATUS share_get_context_by_name(TALLOC_CTX *mem_ctx, const char *backend_name,
+                                  struct tevent_context *event_ctx, 
+                                  struct loadparm_context *lp_ctx,
+                                  struct share_context **ctx)
 {
        const struct share_ops *ops;
 
        ops = share_backend_by_name(backend_name);
        if (!ops) {
-               DEBUG(0, ("share_init_connection: share backend [%s] not found!\n", lp_share_backend(global_loadparm)));
+               DEBUG(0, ("share_init_connection: share backend [%s] not found!\n", backend_name));
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       return ops->init(mem_ctx, ops, ctx);
-}
-
-NTSTATUS share_get_context(TALLOC_CTX *mem_ctx, struct share_context **ctx)
-{
-       return share_get_context_by_name(mem_ctx, lp_share_backend(global_loadparm), ctx);
+       return ops->init(mem_ctx, ops, event_ctx, lp_ctx, ctx);
 }
 
 /*
@@ -151,13 +147,11 @@ NTSTATUS share_get_context(TALLOC_CTX *mem_ctx, struct share_context **ctx)
 */
 NTSTATUS share_init(void)
 {
-       init_module_fn static_init[] = STATIC_share_MODULES;
-       init_module_fn *shared_init = load_samba_modules(NULL, global_loadparm, "share");
+#define _MODULE_PROTO(init) extern NTSTATUS init(void);
+       STATIC_share_MODULES_PROTO;
+       init_module_fn static_init[] = { STATIC_share_MODULES };
 
        run_init_functions(static_init);
-       run_init_functions(shared_init);
-
-       talloc_free(shared_init);
 
        return NT_STATUS_OK;
 }