s4-modules: get rid of the remaining static prototypes for modules
[sfrench/samba-autobuild/.git] / source4 / ntvfs / ntvfs_base.c
index c837e5898b73f432d2acb6033619894f75376e27..d8d73e95fe43c903a7448a0d91c4d1b702a4f92b 100644 (file)
@@ -23,8 +23,7 @@
 */
 
 #include "includes.h"
-#include "lib/util/dlinklist.h"
-#include "build.h"
+#include "../lib/util/dlinklist.h"
 #include "ntvfs/ntvfs.h"
 #include "param/param.h"
 
@@ -44,7 +43,7 @@ static int num_backends;
 
   The 'type' is used to specify whether this is for a disk, printer or IPC$ share
 */
-_PUBLIC_ NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
+NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
                                 const struct ntvfs_critical_sizes *const sizes)
 {
        struct ntvfs_ops *new_ops;
@@ -85,7 +84,7 @@ _PUBLIC_ NTSTATUS ntvfs_register(const struct ntvfs_ops *ops,
 /*
   return the operations structure for a named backend of the specified type
 */
-_PUBLIC_ const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntvfs_type type)
+const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntvfs_type type)
 {
        int i;
 
@@ -108,12 +107,12 @@ _PUBLIC_ const struct ntvfs_ops *ntvfs_backend_byname(const char *name, enum ntv
 
 static const NTVFS_CURRENT_CRITICAL_SIZES(critical_sizes);
 
-_PUBLIC_ const struct ntvfs_critical_sizes *ntvfs_interface_version(void)
+const struct ntvfs_critical_sizes *ntvfs_interface_version(void)
 {
        return &critical_sizes;
 }
 
-_PUBLIC_ BOOL ntvfs_interface_differs(const struct ntvfs_critical_sizes *const iface)
+bool ntvfs_interface_differs(const struct ntvfs_critical_sizes *const iface)
 {
        /* The comparison would be easier with memcmp, but compiler-interset
         * alignment padding is not guaranteed to be zeroed.
@@ -122,28 +121,28 @@ _PUBLIC_ BOOL ntvfs_interface_differs(const struct ntvfs_critical_sizes *const i
 #define FIELD_DIFFERS(field) (iface->field != critical_sizes.field)
 
        if (FIELD_DIFFERS(interface_version))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_critical_sizes))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_context))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_module_context))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_ops))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_async_state))
-               return True;
+               return true;
 
        if (FIELD_DIFFERS(sizeof_ntvfs_request))
-               return True;
+               return true;
 
        /* Versions match. */
-       return False;
+       return false;
 
 #undef FIELD_DIFFERS
 }
@@ -153,7 +152,9 @@ _PUBLIC_ BOOL ntvfs_interface_differs(const struct ntvfs_critical_sizes *const i
 */
 NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, enum ntvfs_type type,
                               enum protocol_types protocol,
-                              struct event_context *ev, struct messaging_context *msg,
+                              uint64_t ntvfs_client_caps,
+                              struct tevent_context *ev, struct messaging_context *msg,
+                              struct loadparm_context *lp_ctx,
                               struct server_id server_id, struct ntvfs_context **_ctx)
 {
        const char **handlers = share_string_list_option(mem_ctx, scfg, SHARE_NTVFS_HANDLER);
@@ -167,11 +168,13 @@ NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, e
        ctx = talloc_zero(mem_ctx, struct ntvfs_context);
        NT_STATUS_HAVE_NO_MEMORY(ctx);
        ctx->protocol           = protocol;
+       ctx->client_caps        = ntvfs_client_caps;
        ctx->type               = type;
        ctx->config             = talloc_steal(ctx, scfg);
        ctx->event_ctx          = ev;
        ctx->msg_ctx            = msg;
        ctx->server_id          = server_id;
+       ctx->lp_ctx             = lp_ctx;
 
        for (i=0; handlers[i]; i++) {
                struct ntvfs_module_context *ntvfs;
@@ -197,10 +200,18 @@ NTSTATUS ntvfs_init_connection(TALLOC_CTX *mem_ctx, struct share_config *scfg, e
        return NT_STATUS_OK;
 }
 
-NTSTATUS ntvfs_init(void)
+NTSTATUS ntvfs_init(struct loadparm_context *lp_ctx)
 {
-       init_module_fn static_init[] = STATIC_ntvfs_MODULES;
-       init_module_fn *shared_init = load_samba_modules(NULL, global_loadparm, "ntvfs");
+       static bool initialized = false;
+#define _MODULE_PROTO(init) extern NTSTATUS init(void);
+       STATIC_ntvfs_MODULES_PROTO;
+       init_module_fn static_init[] = { STATIC_ntvfs_MODULES };
+       init_module_fn *shared_init;
+
+       if (initialized) return NT_STATUS_OK;
+       initialized = true;
+       
+       shared_init = load_samba_modules(NULL, lp_ctx, "ntvfs");
 
        run_init_functions(static_init);
        run_init_functions(shared_init);