]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libsmbconf: add private_data section to smbconf_ctx.
authorMichael Adam <obnox@samba.org>
Fri, 21 Mar 2008 21:52:27 +0000 (22:52 +0100)
committerMichael Adam <obnox@samba.org>
Fri, 21 Mar 2008 21:52:27 +0000 (22:52 +0100)
This private data should be used by backends.
The token for the registry backend is moved from
the context to the private data section, since
this is registry specific.

Michael

source/lib/smbconf/smbconf_private.h
source/lib/smbconf/smbconf_reg.c

index 6250dc7339663c5f951f211658e986e91a4e3771..e08a2b186a1e62d3b12306e05c8e62455bb2c8e3 100644 (file)
@@ -54,9 +54,9 @@ struct smbconf_ops {
 };
 
 struct smbconf_ctx {
-       NT_USER_TOKEN *token;
        const char *path;
        struct smbconf_ops *ops;
+       void *data; /* private data for use in backends */
 };
 
 WERROR smbconf_add_string_to_array(TALLOC_CTX *mem_ctx,
index beb1c20de6e82f6f8bb93063fb15b53415f31398..aaa03e21e8584e63f86159e311e56fa16a6c79e2 100644 (file)
@@ -20,6 +20,9 @@
 #include "includes.h"
 #include "smbconf_private.h"
 
+struct reg_private_data {
+       NT_USER_TOKEN *token;
+};
 
 /**********************************************************************
  *
  *
  **********************************************************************/
 
+static struct reg_private_data *rpd(struct smbconf_ctx *ctx)
+{
+       return (struct reg_private_data *)(ctx->data);
+}
+
 /**
  * Open a registry key specified by "path"
  */
@@ -44,7 +52,7 @@ static WERROR smbconf_reg_open_path(TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       if (ctx->token == NULL) {
+       if (rpd(ctx)->token == NULL) {
                DEBUG(1, ("Error: token missing from smbconf_ctx. "
                          "was smbconf_init() called?\n"));
                werr = WERR_INVALID_PARAM;
@@ -57,7 +65,8 @@ static WERROR smbconf_reg_open_path(TALLOC_CTX *mem_ctx,
                goto done;
        }
 
-       werr = reg_open_path(mem_ctx, path, desired_access, ctx->token, key);
+       werr = reg_open_path(mem_ctx, path, desired_access, rpd(ctx)->token,
+                            key);
 
        if (!W_ERROR_IS_OK(werr)) {
                DEBUG(1, ("Error opening registry path '%s': %s\n",
@@ -385,18 +394,21 @@ static WERROR smbconf_reg_init(struct smbconf_ctx *ctx, const char *path)
                goto done;
        }
 
-       if (!registry_init_smbconf()) {
-               werr = WERR_REG_IO_FAILURE;
-               goto done;
-       }
+       ctx->data = TALLOC_ZERO_P(ctx, struct reg_private_data);
 
        werr = ntstatus_to_werror(registry_create_admin_token(ctx,
-                                                             &(ctx->token)));
+                                                       &(rpd(ctx)->token)));
        if (!W_ERROR_IS_OK(werr)) {
                DEBUG(1, ("Error creating admin token\n"));
                goto done;
        }
 
+       if (!registry_init_smbconf()) {
+               werr = WERR_REG_IO_FAILURE;
+               goto done;
+       }
+
+
 done:
        return werr;
 }